Facebook OAuth错误:已达到应用程序请求限制


Facebook OAuth Error: Application request limit reached

我正在尝试让facebook的示例页面(再次)正常工作,您可以在这里找到。我得到以下错误:

Fatal error: Uncaught OAuthException: (#4) Application request limit reached thrown in C:'wamp'www'base_facebook.php on line 988

我已经在谷歌上搜索过了,使用这里列出的步骤似乎可以很容易地解决这个问题。然而,当我访问facebook.com/insights时,我的应用程序并没有列出(我已登录)。

更奇怪的是,当我通过"开发者">"我的应用程序"访问我的应用时,我可以转到应用程序的页面并单击"见解"。这将使我进入应用程序的洞察页面。。。但是却找不到诊断部分。有人能帮忙吗?

找出发生这种情况的原因的大致方法是:

  1. 登录https://developers.facebook.com/apps/
  2. 您编辑的最后一个应用程序应该已经在右侧加载;如果没有,请在左侧找到您的应用程序,然后单击名称
  3. 向下滚动,直到看到Insights部分,然后单击See All
  4. 从左侧菜单中,选择API > Activity & Errors

Facebook"Graph API Rate Limiting"文档表示,代码#4的错误是应用程序级别的速率限制,与用户级别的速率限值不同。虽然它没有给出任何确切的数字,但它将其应用程序级别的速率限制描述为:

此速率限制在应用程序级别全局应用。广告api调用被排除在外。

  • 在过去的一个小时里,利率限制在滑动窗口上实时发生
  • 收集每个应用程序的调用和查询次数、占用的cpu时间和使用的内存的统计信息
  • 每个资源乘以给定应用程序的月活跃用户是有限制的
  • 当应用程序使用的资源超过其允许的资源时,会引发错误
  • 错误,代码:4,消息:已达到应用程序请求限制

文件还提出了避免费率限制的建议。对于应用程序级别的限制,它们是:

建议:

  • 验证错误代码(4)以确认节流类型
  • 不要突然打电话,把电话分散一整天
  • 对数据(重要数据、非重复数据等)进行智能提取。
    • 实时洞察,请确保API调用的结构能让您以最少的请求量阅读尽可能多的页面帖子的洞察
    • 不要两次获取用户提要(如果两个应用程序用户有一个特定的共同朋友)
    • 如果好友数量超过250,则不要连续获取所有用户的好友订阅源。将不同日期的提取分开。作为一种选择,首先获取应用程序用户的新闻提要(me/home),以检测哪些朋友对应用程序用户更重要。然后,先获取那些朋友的订阅源
  • 考虑使用以下参数限制/筛选请求:"since"、"until"、"limit"
  • 对于与页面相关的调用,请使用实时更新来订阅数据中的更改
  • 字段扩展允许将多个图查询"连接"到一个调用中
  • Etags以检查自上次检查以来数据查询是否已更改
  • 对于没有庞大用户基础的页面管理开发人员,让页面管理员接受该应用程序以增加用户数量

最后,文档给出了以下信息提示:

  • 批处理调用不会减少api调用的数量
  • 进行并行调用不会减少api调用的数量

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

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