我正在使用 X-FACEBOOK-PLATFORM SASL 身份验证机制处理 facebook 聊天身份验证。
我正在形成用户和密码,如 facebook 开发者论坛和 stackoverflow 问题中所述。
关键是如果我使用 application_secret 作为密码,我可以登录,但根据 stackoverflow 问题(下面的链接),它应该是从旧的 rest api 方法 auth.promoteSession 生成的会话
我想使用旧的 rest api 方法,以避免在我们的桌面应用程序 jar 中分发 application_secret。
所以问题是,你是如何设法使用 auth.promoteSession 登录的????
我已阅读以下对我有很大帮助的帖子:
http://community.igniterealtime.org/message/205739#205739
带有支持 X-FACEBOOK-PLATFORM 的 Java Asmack 库的 XMPP
我正在使用来自 igniterealtime 帖子的 SASLXFacebookPlatformMechanism.java 类,它已正确注册。
我有 xmpp_login 和 offline_access 权限。而且我已经禁用了 Remove Deprecated Auth Methods,所以我可以调用旧的 rest api 方法,在这种情况下:auth.promoteSession 我也在使用客户端流身份验证到 facebook。
因此,使用 application_secret 作为密码,我得到:
<stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9NEIxRUQzNTA5MTQ5MDQxRTE4N0QyNTA0NTUzNjBDQjc=</challenge>
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
但是,如果我使用 auth.promoteSession 返回的值,我会得到:
<stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9MzhFQkUxOTUxNENGRUU4ODc2NzRDREQ0RjhBMUQ0QjI=</challenge>
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>