从 Facebook Graph iOS SDK 解密或解码 Facebook 访问令牌
Posted
技术标签:
【中文标题】从 Facebook Graph iOS SDK 解密或解码 Facebook 访问令牌【英文标题】:Decrypt or decode Facebook access token from Facebook Graph iOS SDK 【发布时间】:2011-07-21 19:10:58 【问题描述】:Facebook ios SDK 正在以这种格式授予加密或编码的访问令牌:
v9ylvkttPnuFWUX4KVdjDPB0SRXkuKX7z281rqjHuG0.eyJpdiI6ImEwWXBDaEtncWpDTU5ibUNuQWdROWcifQ.Y-DwxRY2ZAFZiP7EVuR-HksXqmGw9LXP6umGrfz2XnjSLm0a508u7_jXq0_Kz5a2S8AUUulzUvIRVxTS51_i6VfSByOCbFBIKoBe0-n-Pa8NC29wbuVmGJLvq4W-ezhv0DzA3diiCIqCybt9ELDXoA
在网络上使用 oAuth,Facebook 以这种格式提供未加密/未编码的访问令牌(这个不是真实的):
213455681425|1.BGgrgnfWrdpG_X18.3600.1213252135.2-1334679|dHcDbxGbeYbLg3SRgw12fdf4gd60
如何解密/解码 iOS 访问令牌,以便像使用未编码令牌一样读取过期 unix 时间值和用户 ID?我需要到期日期的原因是确定它何时到期,如果访问令牌已过期但用户尚未撤销 publish_stream 访问权限,我需要用户 ID 使用 appID|appSecret 样式的访问令牌进行发布。
【问题讨论】:
【参考方案1】:该访问令牌永远不会过期,因为它具有offline_access 权限。见here。
在这种情况下,用户似乎通过取消对应用程序的授权或更改他/她的密码来使访问令牌过期。为了缓解这种情况,请考虑使用应用取消授权回调 url。以下是更多细节:
当您的应用的用户在应用仪表板中将其删除或阻止 在 News Feed 中的应用程序,您的应用程序可以通过指定 在开发者应用中取消对回调 URL 的授权。在应用程序删除期间,我们 将发送一个包含单个参数的 HTTP POST 请求, signed_request,其中包含刚刚申请的用户的用户 ID (UID) 删除了您的应用。您将不会在此收到用户访问令牌 请求和所有现有的用户访问令牌将自动 过期了。
http://developers.facebook.com/docs/authentication/
【讨论】:
该令牌只是我在网上找到的显示格式的示例 - 我不想粘贴自己的。我用我的实际过期令牌更新了问题。我没有提示offline_access - 只是publish_stream。但回到这个问题,有没有办法解码那个令牌(可能使用秘密)来解析用户 ID/过期时间戳? 也在寻找这个信息,虽然在我的情况下我不是专门寻找过期的,但真的很想知道如何解码令牌以上是关于从 Facebook Graph iOS SDK 解密或解码 Facebook 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
IOS Facebook SDK - 发布 Open Graph 并在时间轴上显示而无需单击 Activity Log
Facebook iOS SDK(Graph API) 无法访问公共页面信息
Facebook Graph API Explorer 和 iOS SDK API 调用返回不同的结果