Facebook API OAuthException:"发生了意外错误.请稍后"尝试检索特定于页面的访问令牌时重试您的请求

Mar*_*ell 10 authentication api oauth facebook-graph-api

我希望我的应用能够将状态更新发布到特定页面.我有一个应用程序设置和检索它的应用程序ID,而我在Facebook的身份验证文档底部的"页面登录"节中的位置.

第一阶段(用户授予应用程序manage_page权限)似乎完美无缺.我被重定向到这样的URL:

http://myapp.com/#access_token=ACCESS_TOKEN&expires_in=6483

然后,文档说你应该访问以下内容:

https://graph.facebook.com/me/accounts?access_token=TOKEN_FROM_ABOVE

替换TOKEN_FROM_ABOVE为上一个请求返回的那个,这应该返回"用户管理的所有页面的列表,包括每个页面的页面特定访问令牌".

但事实并非如此.我得到的是以下JSON响应:

{
    "error": {
        "message": "An unexpected error has occurred. Please retry your request later.",
        "type": "OAuthException"
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我可以在创建应用程序时设置错误吗?错误消息不太有用,因此非常感谢任何帮助.

Mar*_*ell 31

今天早上突然开始工作 - 不明白为什么.

  • 那么,随机的downvoter,就是这样.你想要*我写什么? (35认同)
  • Ahah很好的回应.此外,我有15个应用程序合法监视15个FB页面作为管理员.我们每小时抓一次数据,然后根据主题标签处理帖子和评论.它已经运行了大约2个月.每隔几天,其中一个应用就会出现此错误.下次运行(通过计划任务)错误消失.一些严肃的FB api gremlins (4认同)

wal*_*mon 5

我想我可以进一步阐明这一点。

当请求页面特定的访问令牌时,我经常收到此返回;此调用的失败似乎与访问令牌所管理的帐户管理的页面数量成正比,因此,如果您管理 100 个页面,则失败的频率会高于管理 1 个页面的频率,如果您有5000 页失败的情况比不发生的情况更常见。

这表明失败与响应大小有关,因为对于大型页面集,返回的 JSON 可能非常长。

解决这个问题的方法很简单。而不是请求所有页面的使用

http://graph.facebook.com/me/accounts?access_token={admin access token}

使用

http://graph.facebook.com/{page id}?fields=access_token&access_token={admin access token}

这将返回该页面的访问令牌。由于响应很小,您遇到 Facebook 服务器端错误的频率应该要低得多。自从我转行以来,我认为我从未经历过失败,而且我经常打电话。

  • 如何取回页面 ID 以插入到页面特定调用中?我知道这样做的唯一端点是帐户端点,当我点击帐户端点时,我得到了与原始发布者相同的错误。 (2认同)