我正在努力让facebook的示例页面再次运行,您可以找到here。我收到以下错误:
Fatal error: Uncaught OAuthException: (#4) Application request limit reached thrown in C:\wamp\www\base_facebook.php on line 988
我已经使用Google搜索了这个问题,并且使用here概述的步骤可以轻松解决问题。但是,当我访问facebook.com/insights时,我的应用程序未列出(我已登录)。
更奇怪的是,当我通过开发者访问我的应用程序>我的应用,我可以转到我的应用页面,然后点击“数据分析”。这将我带到我的应用程序的Insights页面......但诊断部分无处可寻。有人可以帮忙吗?
答案 0 :(得分:6)
找出发生这种情况的原因是:
Insights
部分,然后点击See All
。API > Activity & Errors
。答案 1 :(得分:3)
Facebook "Graph API Rate Limiting" docs表示代码#4
的错误是app level rate limit,与user level rate limits不同。虽然它没有给出任何确切的数字,但它将应用程序级别的速率限制描述为:
此速率限制在应用级别全局应用。广告API呼叫被排除在外。
- 在过去一小时的滑动窗口上实时进行速率限制。
- 收集统计数据,包括调用和查询的数量,花费的cpu时间,每个应用程序使用的内存。
- 每个资源都有一个限制乘以给定应用的每月活跃用户。
- 当应用程序使用超过其允许的资源时,将引发错误。
- 错误,代码:4,消息:已达到应用程序请求限制
文档还提供了避免速率限制的建议。对于应用级别限制,它们是:
建议:
- 验证错误代码(4)以确认限制类型。
- 不要拨打电话,全天分散电话。
- 智能获取数据(重要数据,非重复数据等)。
- 实时洞察,确保API调用的结构使您能够以尽可能少的页面帖子读取数据,并且请求数量最少。
- 请勿两次获取用户Feed(如果两个App用户有一个共同的特定朋友)
- 如果朋友的数量超过250,请不要连续获取所有用户的朋友。在不同的日期分开提取。作为选项,首先获取应用用户的新闻源(me / home),以便检测哪些朋友对App用户更重要。然后,首先获取这些朋友的提要。
- 考虑使用以下参数限制/过滤请求:“since”,“until”,“limit”
- For page related calls use realtime updates to subscribe to changes in data.
- Field expansion allows ton "join" multiple graph queries into a single call.
- Etags to check if the data querying has changed since the last check.
- 对于没有大量用户群的页面管理开发人员,请让该页面的管理员接受该应用以增加用户数。
最后,文档提供了以下信息提示:
- 批量通话不会减少api通话次数。
- 进行并行呼叫不会减少api呼叫的数量。
答案 2 :(得分:2)
如果您对其中一个不需要access_token的FB图形API端点发出GET请求,这并不意味着您不应将其包含在请求参数中。如果你这样做,FB文档说不包括access_token而不是FB服务器端,它会注册到你的服务器机器。因此,可以非常容易地达到限制(无论它究竟是多少)。但是,如果您将用户访问令牌放入请求(& access_token = XXXXXX),则请求注册到特定用户,因此几乎不会达到限制。您可以使用一个简单的脚本来测试它,该脚本可以使用和不使用用户access_token来生成1000个请求。
注意,FB app访问令牌是不够的,因为您将面临同样的问题:请求将被注册到app access_token,这种情况类似于没有access_token的请求。