成功连接到服务器后,即。成功回调到
- (void) xmppStreamDidConnect:(XMPPStream *)sender
有时,我会收到身份验证失败的提示。以下回调称为:

  • (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
  • NSXMLElement看起来像这样:
    <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/><text>The response provided by the client doesn't match the one we calculated.</text></failure>
    就像我说的,我偶尔会得到这个。我已经找到了问题所在,到目前为止,我已经尝试了一些方法。
    到目前为止,我已经研究过并可以确认的事情:
  • 用户名和密码为100%正确
  • 我正在使用SCRAM-SHA-1身份验证机制(XMPPSCRAMSHA1Authentication)
  • 我的服务器也支持PLAIN机制,并且也失败了(XMPPPlainAuthentication)
  • 如果遇到此错误时我尝试强制断开连接([xmppStream disconnect]),然后在xmppStreamDidDisconnect回调中尝试重新打开流([xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]),则我进入无限循环,因为身份验证始终失败

  • 现在,我进一步研究了这一点,当使用SCRAM-SHA-1机制时,它似乎在第二个挑战中失败了。客户端向服务器发送了一些东西(看似有效),但是服务器不喜欢它,并抛出了not-authorized错误。

    有人在想吗?

    最佳答案

    您必须检查您的用户名和密码。如果您传递错误的用户名和密码进行身份验证/登录,则将调用此 didNotAuthenticate 方法

    关于ios - 身份验证失败错误-XMPPFramework-未经授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26684140/

    10-10 23:15