我正在使用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
XMPP与Java Asmack库支持X-FACEBOOK-PLATFORM
我正在使用来自igniterealtime帖子的SASLXFacebookPlatformMechanism.java类,它已经注册了correclty.
我有xmpp_login和offline_access permisions.我已经禁用了删除过时的Auth方法,所以我可以调用旧的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"/>
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用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>
Run Code Online (Sandbox Code Playgroud)