我正在为我的应用开发聊天客户端。现在,我正在Gtalk,Facebook,Yahoo上对其进行测试。我正在为此使用Smack api。我现在已经在Gtalk上成功测试了它。但是在Facebook的情况下,我得到了错误:
01-13 10:53:05.938: INFO/XMPPClient(389): [SettingsDialog] Connected to chat.facebook.com
01-13 10:53:07.178: ERROR/XMPPClient(389): [SettingsDialog] Failed to log in as [email protected]
01-13 10:53:07.178: ERROR/XMPPClient(389): SASL authentication failed using mechanism DIGEST-MD5:
您可以看到我可以连接但无法登录。我已经在这里看到了相同的问题:http://stackoverflow.com/questions/3750547/facing-problem-using-smack-on-android,但对我来说答案不起作用。
此网站对此进行了解释:http://developers.facebook.com/docs/chat
您可以从此站点看到以下摘录。
Authenticating with Username/Password
DIGEST-MD5 SASL机制可用于支持传统的XMPP或未为Facebook定制(甚至不知道)的多协议IM客户端。这种机制要求提示用户输入密码。因此,仅应在必要时使用。特别是,不得将其用于以下任何客户端:
代理XMPP连接(该连接必须直接从用户计算机到Facebook)。向第三方(包括客户端开发人员)报告有关用户活动的消息或任何其他信息。与Facebook集成,或具有Facebook应用程序ID。
如果您的应用程序执行上述任何一项操作,则必须改为使用Facebook平台身份验证。
用户的Jabber ID只是他或她的Facebook用户名,后面带有@ chat.facebook.com。用户必须具有Facebook用户名才能使用DIGEST-MD5。用户获得用户名后,必须注销一次并登录Facebook,我们才能存储密码的特殊哈希。
如果您的应用程序属于任何一种情况,则可能无法正常工作
我遇到了问题。它可以完美解决asmack发行的15.jar。您必须设置:connConfig.setSASLAuthenticationEnabled(true);
并且您必须设置仅写用户名,而无需@ chat.facebook.com