1

最近我们遇到了一些服务器端访问令牌的奇怪行为。它会在很短的时间内(大约 15 分钟)到期。场景如下:用户通过 facebook(服务器端)登录我们的页面,我们存储访问令牌。我们页面上的某些操作可以触发发布/提要。在几次提要帖子之后,我们突然开始收到错误 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
   } 

很难重现这种行为,但我们在测试环境中重现了几次(所以我们知道何时创建访问令牌,该用户没有取消对应用程序的授权,也没有更改密码)。

任何想法为什么访问令牌会过期?

4

2 回答 2

1

我仔细检查了应用程序高级设置中是否启用了“删除离线访问权限”,这样我就可以获得 60 天的服务器端令牌。

不知道为什么,但所有访问令牌都已从访问令牌调试器报告的“大约一小时内”过期。

我创建了新应用程序(也带有“删除离线访问权限”),现在我得到了 2 个月后过期的令牌。

不知道为什么,但答案是创建新的应用程序。

于 2012-09-12T14:40:11.273 回答
1

默认情况下,facebook 分配一个短暂的访问令牌。您需要请求长期令牌。

阅读文档以了解如何获取它:http: //developers.facebook.com/roadmap/offline-access-removal/#extend_token

编辑:

以前的链接失效了,用下面的链接

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/

于 2012-08-31T19:10:52.370 回答