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

时间:2011-06-20 13:48:57

标签: php facebook facebook-php-sdk

我正在努力让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页面......但诊断部分无处可寻。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

找出发生这种情况的原因是:

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