1

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

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

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

先感谢您。

4

1 回答 1

3

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

由于这没有发生,您应该向 Facebook 提交错误

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

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

相反,您应该在每次调用 FB api 时检查 OAuth 错误,然后在检测到 OAuth 错误时将用户重定向到登录流程,如 Facebook 开发人员博客上关于如何处理过期访问令牌的文章中所述.

于 2013-01-14T11:26:42.973 回答