最近我们遇到了服务器端访问令牌的一些奇怪行为。它会在很短的时间内(大约15分钟)到期。场景如下:用户通过Facebook(服务器端)登录我们的页面,我们存储访问令牌。我们页面上的某些操作可以触发帖子/ Feed。在几个饲料站后,我们突然开始收到错误400和错误401.
错误400可能是由于帖子数量限制,但在错误401访问令牌过期后。
每一个行动都回应:
{
"error": {
"message": "Error validating access token: Session has expired at unix
time 1346321603. The current unix time is 1346320983.",
"type": "OAuthException",
"code": 190
"error_subcode": 463
}
很难重现这种行为,但我们在测试环境中重复了几次(所以我们知道创建访问令牌时,该用户没有取消对应用程序的授权,也没有更改密码)。
为什么访问令牌会过期?
答案 0 :(得分:1)
默认情况下,facebook会分配一个短暂的访问令牌。您需要申请长期令牌。
阅读文档,了解如何获取它:http://developers.facebook.com/roadmap/offline-access-removal/#extend_token
修改强>
以前的链接不再有效,请使用以下链接
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
答案 1 :(得分:1)
我仔细检查在应用程序高级设置上启用了“删除offline_access权限”,这样我就可以获得60天的服务器端令牌。
不确定原因,但所有访问令牌都已从访问令牌调试程序报告“大约一小时”到期。
我创建了新的应用程序(也使用了“删除offline_access权限”),现在我得到了2个月后到期的令牌。
不确定原因,但答案是创建新的应用程序。