0

我正在为我的应用程序开发聊天客户端。现在我正在 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 chikka0305@chat.facebook.com
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但这个答案对我不起作用。

4

2 回答 2

1

本网站对此进行了解释:http: //developers.facebook.com/docs/chat

您可以从本网站看到以下摘录。

Authenticating with Username/Password

DIGEST-MD5 SASL 机制可用于支持传统的 XMPP 或多协议 IM 客户端,这些客户端不是为(或什至不知道)Facebook 定制的。这种机制需要提示用户输入他或她的密码;因此,它只应在必要时使用。特别是,它不得用于以下任何客户端:

代理 XMPP 连接(连接必须直接从用户的计算机到 Facebook)。向第三方(包括客户端开发人员)报告有关用户活动的消息或任何其他信息。与 Facebook 集成,或具有 Facebook 应用程序 ID。

如果您的应用程序执行上述任何操作,则必须改用 Facebook 平台身份验证。

用户的 Jabber ID 只是他或她的 Facebook 用户名,并附加了@chat.facebook.com。用户必须拥有 Facebook 用户名才能使用 DIGEST-MD5。在用户获得他或她的用户名后,他或她必须退出并登录 Facebook 一次,以便我们存储密码的特殊哈希值。

如果您的应用程序属于任何一种情况,那么它可能无法正常工作

于 2011-01-13T06:28:05.640 回答
0

我得到了我的问题。它与 asmack-issue 15.jar 完美配合。你必须设置: connConfig.setSASLAuthenticationEnabled(true);


并且您必须仅在没有@chat.facebook.com 的情况下设置写入用户名

于 2011-01-19T07:29:35.567 回答