FB OAuth返回访问令牌但没有到期值

时间:2012-09-03 11:16:46

标签: oauth facebook-oauth

描述

OAuth服务“随机”无法返回“过期”值。

该应用程序使用服务器端身份验证和简单的WebRequests和重定向(无SDK),并完全符合documentation

我们将“过期”值存储在我们自己的数据库中,并且我们使用此信息提示用户在accessstoken过期时重新进行身份验证(或将很快过期)。

我们不会以任何方式自动更新或批量更新accessstoken。 Accesstoken只能通过服务器端身份验证刷新,即进程始终由用户启动。

现在我们注意到,当我们尝试刷新这些过期令牌中的一些(但不是全部)时,即使用户重新确认,OAuth服务也会返回第4步的过期值他确实希望允许我们访问他的Facebook帐户。 accessstoken回复得很好。

其他令牌不会遇到此问题。问题似乎是随机发生的,但可能与某些授予manage_pages权限的用户相关,而其他用户则没有。然而,这是猜测,我目前无法测试这一点。

用户可以手动转到他的应用设置并从中删除我们的应用来“解决”问题。接下来执行服务器端身份验证时,OAuth响应会按预期包含过期值,因此任何后续调用都将授权该用户。

问题

  • 这种(无证件)行为的原因是什么或可能是什么原因?
  • 我们如何修复受影响的令牌?
  • 我们如何防止这种情况发生?

提前谢谢你,

1 个答案:

答案 0 :(得分:0)

这显然是一个已知的错误。 (见CBroe的评论)