【问题标题】:Decrypt or decode Facebook access token from Facebook Graph iOS SDK从 Facebook Graph iOS SDK 解密或解码 Facebook 访问令牌
【发布时间】:2025-12-25 11:25:07
【问题描述】:

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 样式的访问令牌进行发布。

【问题讨论】:

    标签: facebook facebook-graph-api facebook-ios-sdk


    【解决方案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/过期时间戳?
    • 也在寻找这个信息,虽然在我的情况下我不是专门寻找过期的,但真的很想知道如何解码令牌