Facebook Graph API 403 禁止错误

Posted

技术标签:

【中文标题】Facebook Graph API 403 禁止错误【英文标题】:Facebook Graph API 403 Forbidden Error 【发布时间】:2013-03-15 00:45:23 【问题描述】:

这类似于这里的一些问题,但似乎没有一个问题能产生对我有帮助的答案。我正在从 c#/.Net 应用程序调用图形 api 来获取特定相册的照片,但有时会收到 403 错误。

我从来没有在我的开发环境中收到过错误,只有在生产中。我还将响应缓存了一个小时,因此应用程序在给定小时内访问 API 的次数最多约为 20 次,而不是一次全部。当它出错并且根本不显示图像时,我目前正在吞下异常,但这不是一个长期的解决方案。

var request = WebRequest.Create("https://graph.facebook.com/ALBUM_ID/photos");
var stream = request.GetResponse().GetResponseStream();

大约一个月前才开始发生这种情况,但我在重大更改列表中没有看到任何暗示这种行为的内容。任何见解将不胜感激。

更新

这被隐藏在响应流中。

"error":"message":"(#4) 应用请求限制 达到","type":"OAuthException","code":4

考虑到我只使用了几次 api,我这辈子都看不到如何达到极限。

【问题讨论】:

查看 HTTP 403 的内容是否有与之相关的实际 API 错误。 谢谢 phwd。当它再次开始中断时,我会看看是否有更多响应。现在它工作正常,但从现在起 2 小时后可能就不行了。 @phwd 这在响应中... '"error":"message":"(#4) Application request limit reached","type":"OAuthException","code ":4' 为了好玩:developers.facebook.com/bugs/257200164380833 我也看到了,大卫。我认为这要么是一个错误,要么是物理服务器上的另一个站点正在敲击 api,导致它被 IP 阻止。我将尝试使用身份验证令牌,看看是否能解决问题。 【参考方案1】:

如果您向不需要 access_token 的 FB 图 API 端点之一发出 GET 请求,这并不意味着您不应将其包含在请求参数中。如果您按照 FB 文档中所说的不包含 access_token 进行操作,那么在 FB 服务器端它会注册到您的服务器机器中。因此,可以很容易地达到限制(无论数量是多少)。但是,如果您将用户访问令牌放入请求中(&access_token=XXXXXX),然后请求将注册到特定用户中,因此几乎不会达到限制。您可以使用一个简单的脚本来测试它,该脚本在有和没有用户 access_token 的情况下发出 1000 个请求。

注意,FB 应用程序访问令牌是不够的,因为您将面临同样的问题:请求将被注册到应用程序 access_token 中,这种情况类似于在没有 access_token 的情况下发出请求。

【讨论】:

好像已经帮我修好了

以上是关于Facebook Graph API 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 YouTube 分析 API 检索指标时禁止出现 403

Ropsten 网络中禁止 Etherscan API 请求 403

启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止

Yandex Weather API 中的 403 禁止

403(禁止),Google Speech API 上的无效键错误

授权策略总是返回 403(禁止)-MVC/API