我想在Android上构建一个XMPP客户端,我已经使用Digest-MD-5进行了身份验证,但是当我尝试将其转换为X-FACEBOOK-PLATFORM时,它仍然失败了。
答案 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次重试。打败我为什么,因为我使用相同的会话密钥和秘密..