【问题标题】:Facebook access token validityFacebook 访问令牌有效性
【发布时间】:2012-12-28 07:05:03
【问题描述】:

我使用 Facebook server side login flow 获取长寿命访问令牌,有效期为 60 天。由于我一直需要访问用户的帐户(即我总是需要一个有效的访问令牌),当令牌即将到期时,我要求用户重新确认对我的应用程序的访问。问题是,当令牌尚未过期时,Facebook 会返回相同的令牌,但没有延长有效期。

例如,刚刚发行的令牌有效期为 60 天。三天后,用户再次确认访问我的应用程序,但 Facebook 返回相同的令牌,有效期仅为 57 天。我想在每次确认后获得一个新的(有效期为 60 天)。

在 Stack Overflow 上,有几个关于 Facebook 令牌有效性的问题,但是没有一个讨论这个问题。

提前谢谢你。

【问题讨论】:

    标签: facebook oauth facebook-oauth


    【解决方案1】:

    根据Facebook's documentation for extending access tokens,“从……服务器端登录流程创建的应用程序会自动获得长期有效的用户访问令牌。每次用户触发身份验证流程时,这个长期有效的令牌都会刷新和扩展。”

    既然这没有发生,你应该file a bug with Facebook

    我还建议不要检查访问令牌是否过期,因为访问令牌在过期日期之前可能由于多种原因而过期:

    • 用户更改密码
    • 您更改了应用密码
    • 用户删除应用,然后返回应用

    相反,您应该在每次调用 FB api 时检查 OAuth 错误,然后在检测到 OAuth 错误时将用户重定向到登录流程,如 Facebook 开发人员博客how to handle expired access tokens 上的这篇文章中所述.

    【讨论】:

    • 谢谢。我知道你描述的情况,所以我会定期检查令牌是否在 FB 方面无效。我将在 Facebook 上提交错误报告。
    • 小心。您不应该“定期”检查。您应该检查每一个 FB API 调用。
    • 我们的应用程序中有各种组件使用这些令牌,所以我对它们的使用方式几乎没有什么要说的。这就是维护令牌的组件定期检查其有效性的原因。
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 2012-02-20
    • 2015-03-07
    • 2019-05-27
    • 1970-01-01
    • 2012-05-16
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多