Facebook 聊天 - X-FACEBOOK-PLATFORM 身份验证
Posted
技术标签:
【中文标题】Facebook 聊天 - X-FACEBOOK-PLATFORM 身份验证【英文标题】:Facebook chat - X-FACEBOOK-PLATFORM authentication 【发布时间】:2010-09-14 13:53:39 【问题描述】:我想在 android 上构建一个 XMPP 客户端,我使用 Digest-MD-5 进行身份验证使其运行完美,但是当我尝试将其转换为 X-FACEBOOK-PLATFORM 时,它一直失败。
【问题讨论】:
能否将下载的相关部分提取为问题中的文本? 【参考方案1】:所以基本上 X-FACEBOOK-PLATFORM 身份验证只使用访问令牌的一部分。这称为会话密钥。
访问令牌由“|”分隔字符,因此您拆分访问令牌并仅获取位于中心的字符。请参阅下文。
******|a681464febcefb8* -**|**** **
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");
【讨论】:
【参考方案2】:我从来没有让 FB 聊天与我的 appSecret 一起工作,而是使用了 sessionSecret。您可以使用旧的 REST API 来获取它。
http://developers.facebook.com/docs/reference/rest/auth.promoteSession/
这样您就可以将您的 appSecret 保密。另外值得注意的是,X-FACEBOOK-PLATFORM 身份验证很少在第一次尝试时成功,但通常需要 3-6 次重试。打败我为什么虽然我使用相同的会话密钥和秘密..
【讨论】:
以上是关于Facebook 聊天 - X-FACEBOOK-PLATFORM 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何使聊天网络应用程序使用 Skype 等 Facebook 聊天 API?
XMPP Android - 构建客户端以在 facebook 上聊天或 facebook 聊天集成