Facebook API - 针对每个用户令牌的少量请求达到用户速率限制

时间:2013-08-14 18:06:28

标签: facebook limit rate-limiting

我有一个Android应用程序,每N分钟检查一次来自Facebook的新通知,其中N超过5分钟(默认为30分钟)。该应用程序还向Facebook的Graph API提出了一些用户生成的请求。 最近(从我们为新通知添加预定轮询的那一刻起),Facebook开始限制我们的应用程序(错误#17“达到了用户请求限制”,但有时它会给出错误#4“达到应用程序请求限制”)。 Insights Dashboard为我们提供了以下统计信息:每天255,000个请求,432个用户。这给每个用户每天大约590个请求,这远远没有我能够找到的API的任何上述限制。 Facebook关于速率限制的信息非常模糊,这里有一些你通常可以在不同来源找到的数字:

  1. 每个IP每个令牌每600秒600次呼叫。
  2. 每个应用每天100M电话。
  3. 每天每个用户令牌10,000次通话。
  4. 我们的应用程序定期执行的计划请求是一个简单的FQL:

      

    SELECT sender_id,created_time,title_text FROM notification WHERE recipient_id = me()AND is_hidden = 0 AND is_unread = 1

    即使最小更新间隔为5分钟,也会每天触发288次。 我们尝试使用Graph API调用替换此请求,但它没有改变任何东西。

    我知道其他应用程序具有类似功能,但似乎没有这些限制。

    是否有人知道是否有任何方法可以避免被Facebook限制在如此低的通话量?

    谢谢!

1 个答案:

答案 0 :(得分:6)

事实证明,代码中存在一个非常难以重现的错误,有时会迫使应用程序连续10-30分钟在循环中发出API请求。只有一小部分客户遇到了这个问题,但这足以触及API限制。

似乎FB API根据应用程序的用户数量计算限制,因此即使调用数量相当有限,我们也会遇到速率限制问题。 另一个观察是,尽管只有少数用户在进行大量API调用,但FB确实限制了所有用户。

希望信息能够以某种方式帮助解决类似的问题。