【问题标题】:XMPPframewok with openfireXMPPframewok 与 openfire
【发布时间】:2011-12-29 19:49:45
【问题描述】:

我已经设置了自己的 Openfire 服务器,并使用 Spark 和 Adium 对其进行了测试。虽然从 XMPPFramework for iOS 运行示例项目时出现以下身份验证错误:

2011-11-16 01:34:26:850 iPhoneXMPP[1245:207] iPhoneXMPPAppDelegate: xmppStream:socketDidConnect:
2011-11-16 01:34:26:850 iPhoneXMPP[1245:8d0f] SEND: <stream:stream xmlns='jabber:client'  xmlns:stream='http://etherx.jabber.org/streams' version='1.0' to='flashmatch.net'>
2011-11-16 01:34:27:464 iPhoneXMPP[1245:7b13] RECV: <stream:stream  xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="ip-10-112-57-167"   id="ff9c2cf2" xml:lang="en" version="1.0"/>
2011-11-16 01:34:27:772 iPhoneXMPP[1245:8d0f] RECV: <stream:features><starttls   xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism><mechanism>CRAM-MD5</mechanism></mechanisms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
2011-11-16 01:34:27:772 iPhoneXMPP[1245:207] iPhoneXMPPAppDelegate: xmppStreamDidConnect:
2011-11-16 01:34:27:772 iPhoneXMPP[1245:207] SEND: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>
2011-11-16 01:34:28:079 iPhoneXMPP[1245:7b13] RECV: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cmVhbG09ImlwLTEwLTExMi01Ny0xNjciLG5vbmNlPSIycWZoY01JL0R2a0Z0ME41TmNSdGpUaGk0dmVOamk4YUxHMU9LMmZwIixxb3A9ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNz</challenge>
2011-11-16 01:34:28:079 iPhoneXMPP[1245:7b13] decoded response: username="alan",realm="ip- 10-112-57-167",nonce="2qfhcMI/DvkFt0N5NcRtjThi4veNji8aLG1OK2fp",cnonce="8C2C32EC-532A-4A75-8166-F75387CE2F84",nc=00000001,qop=auth,digest-uri="xmpp/flashmatch.net",response=8b1ad8c7c968a92d36ff6ed895b0ed80,charset=utf-8
2011-11-16 01:34:28:080 iPhoneXMPP[1245:7b13] SEND: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9ImFsYW4iLHJlYWxtPSJpcC0xMC0xMTItNTctMTY3Iixub25jZT0iMnFmaGNNSS9EdmtGdDBONU5jUnRqVGhpNHZlTmppOGFMRzFPSzJmcCIsY25vbmNlPSI4QzJDMzJFQy01MzJBLTRBNzUtODE2Ni1GNzUzODdDRTJGODQiLG5jPTAwMDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZmxhc2htYXRjaC5uZXQiLHJlc3BvbnNlPThiMWFkOGM3Yzk2OGE5MmQzNmZmNmVkODk1YjBlZDgwLGNoYXJzZXQ9dXRmLTg=</response>
2011-11-16 01:34:28:386 iPhoneXMPP[1245:8d0f] RECV: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>
2011-11-16 01:34:28:386 iPhoneXMPP[1245:207] iPhoneXMPPAppDelegate: xmppStream:didNotAuthenticate:

但是,当连接到 talk.google.com 时,相同的示例项目运行良好。有谁知道这里出了什么问题?

【问题讨论】:

  • 我遇到了同样的问题。设法找到解决方案?
  • 我也是。运气好找到解决方案了吗?

标签: ios xmpp xmppframework


【解决方案1】:

不看代码很难猜出问题,但身份验证问题表明您的用户 JID 或密码存在问题。所以我可以想到两个可能的问题:

  1. 您应该确保在 Openfire 中正确设置了用户和密码。
  2. 第二次检查“服务器名称”属性是否设置正确。转到您的管理面板-> 服务器信息-> 服务器名称。这应该与您的 iOS 项目中用户的域名相匹配。让我们看看这个例子:如果你的服务器名称设置为“127.0.0.1”,那么你应该使用 YOURUSER@127.0.0.1,使用 YOURUSER@localhost 将不起作用,在身份验证过程中会失败。

【讨论】:

    【解决方案2】:

    当您尝试登录时,请提供用户名和服务器的 IP 地址,例如“JIDname=user@127.0.0.1”

    如果您尝试在指定域登录,请在 setupStream 方法中添加这行代码

    [xmppStream setHostName:@"google.com"];//domain name
    [xmppStream setHostPort:5222];//port number
    

    【讨论】:

      【解决方案3】:

      您可以在管理面板中查看 openfire ServerName。

      服务器管理器 > 服务器信息 > 服务器名称:[server_name]

      主机地址/IP 可能与服务器名称中的不同:

      [host_address]:9090/ - 管理面板 [server_name]

      如果服务器名称与主机地址设置不同,则如下所示。在大多数情况下,服务器名称和主机地址是相同的。因此,使用 iOS xmppframework 进行身份验证没有问题。

      xmppStream.hostName = @"hostaddress";
      xmppStream.hostPort = 5222;
      
      jabberID = @"username@servername";
      

      【讨论】:

        猜你喜欢
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 2013-07-26
        • 2015-04-11
        • 2018-07-15
        • 1970-01-01
        相关资源
        最近更新 更多