使用加密访问令牌格式登录 Facebook XMPP

Posted

技术标签:

【中文标题】使用加密访问令牌格式登录 Facebook XMPP【英文标题】:Logging into Facebook XMPP with encrypted access token format 【发布时间】:2011-10-12 10:25:48 【问题描述】:

我的 accessToken 有问题!!

accessToken 一直没问题。

标准格式:AAA|BBB|CCC

我可以从给定的 accessToken(AAA|BBB|CCC) 中获取可用的当前用户的 uid 和会话密钥

但是今天fb服务器出乎意料地给了我一个奇怪的accessToken。它对xmpplogin没有用。

例如。 AAACmERnbMSwBAB3XnOt4hnR71agtbo3CE8w2Xd7jD7QEURSiiOFV1Eg85tHsaHvVNobiUFppqzQcaXKjWOVSZCIFKvVsEJ4llZBfNI6AZDZD

你能给我一个线索吗?我整天都在寻找答案。

【问题讨论】:

我今天登录时会收到类似的访问令牌,但这并不妨碍我使用任何功能。 (我正在使用 Facebook C# SDK) @fansmey 您没有使用新的访问令牌获得所需的信息吗? 【参考方案1】:

根据https://developers.facebook.com/blog/post/572/,访问令牌格式最近更改为加密格式。使用此加密令牌(包括 XMPP),所有 API 都应该可以正常工作,但它需要对您的 XMPP 代码进行少量代码更改。

Sep 10 上有一篇博文展示了如何使用访问令牌进行 XMPP 身份验证。

session_keysig 参数替换为access_token 参数,该参数应该是具有xmpp_login 权限的用户access_token - 另请注意,它需要通过SSL 传递(我认为这是可选的你只传递了会话密钥和信号)

如果您在传递加密访问令牌时无法使 XMPP 登录正常工作,请在 Facebook's bug tracker 中提交错误,但请确保您已根据上述注释和 chat docs 更改了参数。

【讨论】:

@lgy // 创建响应数组 $resp_array = array( 'method' => $challenge_array['method'], 'nonce' => $challenge_array['nonce'], 'access_token' => $access_token, 'api_key' => $options['app_id'], 'call_id' => 0, 'v' => '1.0', ); // 创建签名 $response = http_build_query($resp_array);【参考方案2】:

Facebook 访问令牌的格式最近发生了变化。现在它被加密了。目前,如果您想获取访问令牌所有者的用户 ID,请按以下格式发出请求

https://graph.facebook.com/me?fields=id&access_token='accesstoken'

这会将访问令牌所有者的 Facebook 用户 ID 作为 Json 字符串返回。即使用户未登录,此请求也有效。

【讨论】:

以上是关于使用加密访问令牌格式登录 Facebook XMPP的主要内容,如果未能解决你的问题,请参考以下文章

iOS:通过自动登录获取 Facebook 访问令牌

从 Facebook Graph iOS SDK 解密或解码 Facebook 访问令牌

登录 facebook oauth 访问令牌是不是安全?

Facebook 访问令牌在第二次尝试使用 ParseFacebookUtils 登录 Facebook 时为空

使用现有用户访问令牌使用 Spring Social 登录 Facebook

使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误