【问题标题】:Facebook's 5000 Post API LimitFacebook 的 5000 个帖子 API 限制
【发布时间】:2012-05-02 21:46:33
【问题描述】:

我对 Facebook 限制您的 api 调用的方式有疑问。

在这篇文章的底部:http://developers.facebook.com/blog/post/478/facebook 说:

除了上面列出的每个表和连接的文档中提到的限制之外,知道在运行可见性检查之前我们将获取的最大结果数是 5,000 是很有帮助的。

我想知道如何浏览这样的公共数据。以夏奇拉为例:她上传的每张照片都会获得很多赞,这个 api 调用:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=0&__after_id=100002349968919

最终停止在 5000 个喜欢。

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=5000&__after_id=100000881924617

有趣的一点是,这些数据都是公开的,我不必登录 Facebook 就可以看到它。我知道有关于您如何使用数据的隐私政策,这不是我的问题。如果数据是公开的,这个数据是什么,为什么我们不能全部获取,如果可以,如何获取?

主要问题是:

  1. 您能否获得超过 5000 个特定 API 调用的结果,如上述那样?

  2. 是最近的 5000 个赞吗?所以如果你马上开始收集这个帖子的数据,然后每隔 10 分钟左右返回一次寻找新的喜欢,你能用这种防止 5000 限制的方法获得所有数据吗?

    李>
  3. 是对 API 调用的限制,还是对他们发送给一个用户的结果数量,或者对他们为某个帖子发回的结果数量等有限制?

  4. 这是否适用于帖子、标记和 cmets 以及类似分页?

我知道这个问题有点开放,但我到处寻找答案,但没有很好的记录。任何帮助都会很棒,我想很多人将来可能会参考这些信息。

更新:

运行此 API 调用时:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=4964&__after_id=100000881924617

你得到一个结果,因此达到了极限(至少接近极限)。有人建议使用 FQL,这可能会返回更多。但我尝试用 FQL 在 PHP 中做同样的事情,结果只返回了 1 条记录。

$select = urlencode("SELECT user_id, object_id, post_id FROM like WHERE post_id='5027904559_10150854808869560' LIMIT 1000 OFFSET 4964");
        $fql_query_url = 'https://graph.facebook.com/fql?q=' . $select;
        $fql_query_result = file_get_contents($fql_query_url);
        $fql_query_obj = json_decode($fql_query_result, true);

所以,到目前为止,唯一的答案是“不”,您始终只能获得 5000 个结果。而且我不认为/不知道具有某些特定权限的特定 access_token 是否有帮助。

还有一个更新,当我转到 Shakira 的页面并单击“x 数量的这样的人”并开始向下滚动列表时,我也达到了限制。因此,Facebook 不仅限制了 API 和 FQL 返回,还限制了他们自己的页面。

我很想知道是否有人知道为什么?他们一次只有 5k 的缓存,如果人们用这么多请求访问数据库,他们将无法处理规模?只是猜测。

【问题讨论】:

  • 老实说,即使数据是公开的,我也很惊讶。至少我希望这仅对注册的应用程序开发人员可用,即使这样,也只有在用户的隐私首选项设置为允许该特定开发人员使用的情况下。
  • 是的,不是每个人的数据都是公开的,但粉丝页面确实有一些公开数据。像夏奇拉。
  • 嗨@chantheman,你解决了这个问题/找到了另一种方法吗?

标签: php facebook facebook-graph-api


【解决方案1】:

遗憾的是,没有办法获得超过最后 5000 个对象。

除非,正如你所说,你从少于 5000 个的时候开始维护它,并将它们存储起来。 :)

这可能是有意的,也可能不是有意的(也许他们正试图让旧消息消亡并且不容易被发现),或者,它可能与您在 Facebook 上允许的好友数量(5000 个)相吻合。

【讨论】:

  • 感谢您的回答。澄清一下,当夏奇拉在一张图片上有 400,000 个赞时,我只能得到最新的 5000 个。期间。我不能使用偏移量以某种方式返回 5k(我试过这个但无法让它工作)?如果我有页面管理员的特定权限怎么办?那我能得到更多吗?
  • 没有。像许多网站一样,Facebook 不是从它自己的 API 构建的,这会导致这样的问题。但是,如果您真的需要全部 400,000 个赞,您可以抓取页面。正如我所说,这可能是故意的限制。
  • 这很有趣。似乎限制了很多应用程序的开发。我有兴趣看看是否有人解决了这个问题,但我只看到两个解决方案:1.像你说的那样构建一个抓取工具/爬虫,或者2.收集数据一直存储它,并存储最后收集的数据,这样你就可以每次收集时从那里开始。我想看看有没有其他人遇到过这个问题。再次感谢您提供的信息。
  • 其他人在 SO 上提问并得到了几乎相同的坏消息,我认为不可能克服 Facebook 的硬限制。
  • 我使用了 400 个限制,并且每个“下一页”我都使用了最后一个数字(400、800、1200 等)——我仍然达到 5K。我做错了吗?
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多