我对 Facebook 限制 API 调用的方式有疑问。
到本文底部:http://developers.facebook.com/blog/post/478/脸书 说:
除了上面列出的每个表和连接的文档中提到的限制之外,了解我们在运行可见性检查之前获取的最大结果数是 5,000 也是很有帮助的。
我想知道如何翻阅这样的公共数据。以夏奇拉为例:她上传的每张照片都获得了很多很多的点赞,这个 api 调用如下:
最终停在 5000 个赞。
有趣的一点是,这些数据都是公开的,我不必登录 Facebook 就能看到它。我知道有隐私政策how你使用数据,这不是我的问题。如果数据是公开的,那么我们为什么不能获取全部数据?如果可以,如何获取?
主要问题是:
对于特定 API 调用,您能否获得超过 5000 个结果(如上例所示)?
是最近的5000个赞吗?因此,如果您立即开始收集该帖子的数据,然后每隔 10 分钟左右返回一次以寻找新的点赞数,您是否能够通过这种防止 5000 限制的方法获取所有数据?
是对 API 调用的限制,还是仅限制他们向一个用户发送的结果数量,还是限制他们为某个帖子发回的结果数量,等等?
这是否适用于帖子、标记、评论和点赞分页?
我知道这个问题有点开放式,但我到处寻找答案,但没有很好的记录。任何帮助都会很棒,我想很多人将来可能会参考这些信息。
UPDATE:
运行此 API 调用时:
您返回一个结果,从而达到极限(至少接近极限)。有人建议使用 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 是否有帮助。
还有一个更新,当我转到夏奇拉的页面并单击“x 数量这样的人”并开始向下滚动列表时,我也达到了限制。因此,Facebook 不仅限制 API 和 FQL 返回,还限制自己的页面。
我有兴趣看看是否有人知道为什么?他们一次只有 5k 的缓存,如果人们用这么多请求访问数据库,他们将无法处理规模?只是一个猜测。