【问题标题】:Detecting Facebook OAuth token expiration检测 Facebook OAuth 令牌过期
【发布时间】:2012-05-23 12:30:24
【问题描述】:

我有一个 Facebook 应用程序,它在粉丝页面上定期发布帖子。

为此,应用程序获取一个 OAuth 令牌以用于在页面上发布。要获取此令牌,用户需要访问该应用程序。然而,有时 Facebook 会使这些令牌失效,至少在用户更改他们的 FB 密码时是这样,而且在其他一些与安全相关的情况下也是如此。

发生这种情况时,应用将无法发布预定的帖子,并且用户会不满意。我应该如何解决这个问题?我可以在用户的​​令牌过期时向他们发送电子邮件,但我将如何检测过期?鉴于我有 100,000 多个用户,经常轮询令牌会很昂贵。

【问题讨论】:

标签: facebook oauth


【解决方案1】:

好吧,直接回答你的问题,给你:Facebook Debugger

在此处输入 Access_token 以检查其有效性和其他信息。但我知道这通常不能解决你的问题。我可以帮助你朝着正确的方向前进。


您看到令牌有效性受您向用户请求的权限的影响。有这个offline_access 权限为您提供不会超时的访问令牌,而不是常规的一小时令牌。我相信你知道这一点,因为你已经能够安排用户发帖了。

很遗憾,offline_access 现在是 deprecated by Facebook (see this link)。从现在开始,Facebook 会默认给我们 2 个月的 access_token,即使没有得到许可。从那时起,我们需要“刷新”或扩展访问令牌。阅读该链接的更多信息。

关于您在使用更改密码、注销等方面的问题,Facebook 有自己的dedicated blog post about it as well, see here


如果您想自己检查令牌有效性,您可以设置一个每小时或每天运行的 CRON(取决于您),并为每个令牌 (/me) 进行快速 API 调用。如果失败或产生错误,则令牌已过期。

如果您每分钟执行一次会更好:需要检查 10 到 20 个令牌,因此一次执行 100,000 多次调用不会对您的服务器造成沉重负担。

【讨论】:

  • 如果令牌被 Facebook 取消,“刷新”将无济于事。
  • 是的,过期的令牌无法刷新。即使原因是超时,而不是密码更改。如果您也不想设置 CRON 来每次都检查,您可以在预定的帖子实际失败时发送电子邮件。请他们重新登录并立即发布。
  • 感谢 Dragonjet。通过检查令牌的有效性,我当然是指通过软件。但是进行数百万次 API 调用仍然很昂贵。我也在发送电子邮件,但目前我在使用令牌失败后才这样做(因为不断轮询令牌有效性太贵了),所以从客户的角度来看,我的应用程序随机不起作用我收到了很多投诉。
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 2016-11-29
  • 2012-04-05
  • 1970-01-01
  • 2013-03-24
  • 2015-11-04
  • 1970-01-01
相关资源
最近更新 更多