Facebook聊天 - X-FACEBOOK-PLATFORM认证

时间:2010-09-14 13:53:39

标签: android facebook xmpp

我想在Android上构建一个XMPP客户端,我已经使用Digest-MD-5进行了身份验证,但是当我尝试将其转换为X-FACEBOOK-PLATFORM时,它仍然失败了。

2 个答案:

答案 0 :(得分:3)

基本上,X-FACEBOOK-PLATFORM身份验证仅使用访问令牌的一部分。这称为会话密钥。

访问令牌由“|”分隔字符,因此您可以拆分访问令牌,只获取中心的字符。请参阅下文。

** * *** | a681464febcefb8 < / EM> <强> * - ** < EM> | * ** * **

long callId = new GregorianCalendar().getTimeInMillis() / 1000L;

            String sig = "api_key=" + apiKey
                            + "call_id=" + callId
                            + "method=" + method
                            + "nonce=" + nonce
                            + "session_key=" + sessionKey
                            + "v=" + version
                            + appSecret;

            try {
                sig = MD5(sig);
            }
            catch (NoSuchAlgorithmException e) {
                throw new IllegalStateException(e);
            }

            String composedResponse = "api_key=" + URLEncoder.encode(apiKey, "utf-8")
                                        + "&call_id=" + callId
                                        + "&method=" + URLEncoder.encode(method, "utf-8")
                                        + "&nonce=" + URLEncoder.encode(nonce, "utf-8")
                                        + "&session_key=" + URLEncoder.encode(sessionKey, "utf-8")
                                        + "&v=" + URLEncoder.encode(version, "utf-8")
                                        + "&sig=" + URLEncoder.encode(sig, "utf-8");

答案 1 :(得分:0)

我从未让FB聊天与我的appSecret合作,而是使用sessionSecret。您可以使用旧的REST API来获取它。

http://developers.facebook.com/docs/reference/rest/auth.promoteSession/

通过这种方式,您可以将appSecret保密。另外值得注意的是X-FACEBOOK-PLATFORM认证在第一次尝试时很少成功,但通常需要3-6次重试。打败我为什么,因为我使用相同的会话密钥和秘密..