Facebook 的 Graph API 调用限制是多少?

Posted

技术标签:

【中文标题】Facebook 的 Graph API 调用限制是多少?【英文标题】:What's the Facebook's Graph API call limit? 【发布时间】:2012-02-01 13:12:17 【问题描述】:

我们对 facebook 的 graph api 的调用次数是否有限制? 如果有,那么我们每个应用每天可以拨打多少电话?

【问题讨论】:

Facebook Graph API limit doubt 的可能重复项 【参考方案1】:

另一个forum 对这个问题的最佳回答,来自 2010 年的 Ash Rust:

“经过与 Facebook 平台团队的一些测试和讨论,我知道或在文档中没有官方限制。但是,我发现 每 600 秒 600 次调用,每个令牌 &每个 IP 是关于他们阻止你的地方。我还看到了一些基于应用程序的速率限制,但没有任何数字。

作为一般规则,每秒一个呼叫不应受到速率限制。从表面上看,这似乎非常严格,但请记住,您可以批处理某些调用并使用订阅 API 来获取更改。”


截至 2015 年 10 月,上述信息现已过时。根据https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

,现在在任何给定的 60 分钟窗口内每个用户有 200 次 API 调用

【讨论】:

@mangobug 每个令牌和每个 IP 意味着.. 到底是什么?这是否意味着如果我在 2 个不同的 IP 中使用相同的令牌,我可以将调用次数加倍?如果我有 2 个访问令牌,仍然来自同一个 IP,我可以将呼叫次数加倍吗? @mangobug:我认为 Henley Chiu 的最后评论/问题在这里非常重要 :) “但请记住,您可以批处理某些调用”Facebook 澄清说这不会将有效 API 调用的数量减少到您的限制:“批处理调用不会减少 api 调用的数量。” developers.facebook.com/docs/marketing-api/… 这不再有效,请参阅用户的回答 > 在任何给定的 60 分钟窗口内每个用户 200 次 API 调用 如何为我的应用吸引更多用户?什么是应用用户?它在哪里显示我有多少?【参考方案2】:

根据Facebook dev policies "I. Features and Functionality",唯一的限制是:

(>5M MAU)或(>100M API 调用/天)或(>50M 展示/天)。

(Mau 表示每月用户)

并没有说超出限制后他们会做什么......

今天我遇到了这个限制:

mailbox_fql 的调用次数已超过每 600 秒 300 次调用的速率。

总体而言,每个表都有不同的限制,在大多数情况下,每个 fql 不会返回超过 30 个对象。在我看来,您可以超出一个表的限制,同时您可以访问不同的表,问题是 api 是对所有用户被阻止(超过限制后)还是仅对拥有超出限制...无论如何,超过限制后,您必须等待大约10分钟,这没关系。

所以从技术上讲,您每 10 分钟最多可以在 tablemailbox_fql 中获取 300*30 个对象。

【讨论】:

这些是合同需要到位的门槛,而不是 Mangobug 回答中的硬技术限制 不是真的“对 mailbox_fql 的调用已超过每 600 秒 300 次调用的速率。”意味着这是一个在现实生活中强制执行的硬性限制。这也表明不同的表有不同的限制。 (这是真的)。​​【参考方案3】:

来自 facebook 文档

用户级别限速

此速率限制适用于除广告 API 之外的所有 API 调用的用户级别。

速率限制在滑动窗口上实时发生。 每个呼叫都分配一个分数。最高分数为 n。 用户根据所拨打的电话累积分数。 当达到最大分数时,将引发限制错误。 错误,代码:17,消息:达到用户请求限制

应用级速率限制

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

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

检查此文档 https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/

【讨论】:

在哪里可以举例说明如何进行用户级调用和应用级调用?无论哪个是应用程序级别限制,这一切都通过应用程序 ID 进行?他们对这方面的文档不是很好。 文档链接错误。正确的是developers.facebook.com/docs/graph-api/advanced/rate-limiting 这个答案是关于营销 API,而不是像 OP 要求的那样的 Graph API。【参考方案4】:

根据 FB 文档,批处理中的每个元素都算作一个单独的调用。

我们目前将一个批次中的请求数量限制为 50 个,但为了计算 API 调用限制和资源限制,批次中的每个调用都会单独计算。例如,一批 10 次 API 调用将计为 10 次调用,并且批处理中的每个调用都会以同样的方式造成 CPU 资源限制。

请检查:https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-limiting

【讨论】:

【参考方案5】:

现在是official:

每个应用在任何给定的 60 分钟窗口内都分配有每个用户 200 次 API 调用

根据截至 2015 年 10 月 7 日的 Facebook 文档,以下是 Graph API 速率限制的工作原理:

在您的 Facebook AppId 上进行速率限制。如果您的应用达到 速率限制,对该应用程序的所有调用都将受到限制,而不仅仅是 以每个用户为基础。 速率限制是通过获取您的应用程序的用户数来计算的 有前一天并添加今天的新登录。这提供了一个基础 您的应用拥有的用户数量。

例如,如果您的应用昨天有 10 位用户,今天有 5 次新登录,那么您的基础就是 15 位用户。这意味着您的应用可以在任何 60 分钟窗口内进行 ((10 + 5) * 200) = 3000 次 API 调用。

更多信息在这里:https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

--2016 年 4 月 12 日更新--

Facebook 现在有一个Rate Limit Dashboard,它可以更容易地查看您的应用程序的速率限制是否超出。它看起来像这样:

【讨论】:

AFAIK 限制仅适用于 Graph API 2.5 及更高版本的应用程序。较旧的应用尚无此限制。 如果我们达到限制,facebook是否有可能返回错误Error: read ECONNRESET??? 实际限制不是每个用户,而是每日活跃用户的平均值:“您的应用程序可以为每位用户每小时进行 200 次调用。例如,如果您的应用程序有 100 个用户,这意味着您的应用可以进行 20,000 次调用。这不是每个用户的限制,因此一个用户可以进行 19,000 次调用,而另一个用户可以进行 1,000 次调用。此限制是根据前一小时的调用次数计算得出的。” 如果他们在每次通话后返回estimatedCallsLeftForThisHour: 1234 会容易得多。 不错且准确的答案!

以上是关于Facebook 的 Graph API 调用限制是多少?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 基于 facebook 的 Firebase 登录并调用 Facebook Graph Api 问题

javascript 使用NodeJS保护Facebook Graph API调用

不使用用户登录的 Facebook Graph API 调用

Facebook Graph API 调用未检索所有字段

在 Facebook Graph API 中,获取用户电子邮件地址和性别的 API 调用是啥?

Facebook Graph API Explorer 和 iOS SDK API 调用返回不同的结果