【问题标题】:Have offline_access tokens started expiring on logout?offline_access 令牌是否在注销时开始过期?
【发布时间】:2012-02-17 15:43:41
【问题描述】:

我有许多 PHP 脚本可以从我的 Facebook 个人资料中提取数据。

我使用从 Graph Explorer 获取的访问令牌设置了这些。

https://developers.facebook.com/tools/explorer/

我确保在生成令牌时,我请求了offline_access 扩展权限。

这些脚本运行了好几个月,但在过去的几天里,我注意到每当我退出 Facebook 时,令牌就会失效,我每次都必须重新登录并获得一个新的。

我的理解是,offline_access 令牌在注销后仍然存在,但在密码更改时不存在。

这方面有什么变化吗?

【问题讨论】:

标签: facebook-graph-api access-token


【解决方案1】:

我对此进行了更多研究。

FB 正在弃用 offline_access 权限。这意味着您将无法再获得一个访问令牌,该令牌为您的应用提供查询用户数据的开放式权限。

相反,您的应用必须测试任何现有令牌的有效性,如果该令牌已过期,您将能够将其换成新的。以前,如果您有一个过期的令牌,您必须再次通过身份验证过程让您的用户获得一个新的,所以这实际上是一个积极的发展。

见:https://developers.facebook.com/docs/offline-access-deprecation/

在我自己的特定示例中,我在 PHP 脚本中使用从 Graph Explorer 获得的令牌,该脚本使用 cURL 查询 Graph(即独立于 FB 上的用户会话),但是我不能这样做。

Graph Explorer 本身就是一个应用程序,最近几天它似乎在其设置中开启了 deprecate_offline_access 迁移,这意味着通过 Graph Explorer 获得的现有 offline_access 令牌现在将在注销时过期。

此外,我无法在脚本中发出交换令牌的请求,因为这需要 Graph Explorer 应用程序的 APP SECRET,而我没有。

因此,作为标准身份验证过程的一部分获得的现有 offline_access 令牌应该继续工作,但通过 Graph Explorer 获得的 offline_access 令牌将不会。

这实际上意味着不再可能在需要扩展权限的情况下编写与图形交互的脚本。现在,所有此类交互都必须在用户会话中进行。

我可以看到其中的逻辑,但是对于 cron 作业等来说,它有点像扳手。

【讨论】:

    【解决方案2】:

    我可能怀疑随着转换(虽然 Facebook 代码是为处理新旧方式而编写的)可能引入了一个错误。如果您可以重现此问题,则应将其作为缺陷提交给 Facebook,地址为 http://developers.facebook.com/bugs

    我已经检查了使用基本访问令牌和全新应用程序的情况。我只要求离线权限。我检查了 linter 中的令牌,它说没问题。我注销了 Facebook,然后重新登录。然后重新检查了令牌。果然它是无效的。在我的应用设置中,我已弃用 offline_access 设置为已启用。

    对于我的下一个测试,我将其设置为禁用并再次检查。果然 Facebook 使该令牌无效。

    对于我的下一个测试,我检查了几年前创建的应用程序。它关闭了不推荐使用的 offline_access。果然,它能够使离线访问令牌保持最新状态,并且根本不会使其无效。

    我还使用我在去年 F8 会议期间创建的应用程序进行了测试,当我退出 facebook 时,它的行为也正确(不会使离线令牌无效)。

    所以,我想这可能取决于您的应用是多久之前创建的。

    【讨论】:

    • 关于弃用offline_access 令牌的文档指出现有令牌应该继续工作,但正如您所说,这似乎并不通用。对我来说,问题是当我发现我现有的令牌不起作用时,我生成了新的令牌,这些令牌可能受到新的到期限制,并删除了旧的令牌。所以我想即使这是一个可修复的错误,我也已经被 jenga'ed 了。
    • developers.facebook.com/bugs 记录一个错误。请在此处报告错误编号,以便偶然发现此问题的其他人可以看到它已被 Facebook 记录。
    • 实际上,现在我想起来了,有问题的脚本是在过去 60 天内编写的。似乎在过去几个月的某个时候,作为弃用过程的一部分,FB 开始对 offline_access 令牌应用 60 天到期,而在此之前发行的令牌没有任何限制。现在,在最近的更新之后,offline_access 令牌的有效期为 0 天,除非您指定需要更多。因此,它可能不是错误,只是文档不足。这个部门的文档实际上已经有一个错误,所以我可以补充一下。
    • 请在此处发布错误报告 # 以供所有人查看。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2020-04-16
    • 2020-02-20
    • 2018-12-28
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多