我正在举办一场比赛,我每天都会在每个独特的评论者的网页上统计所有日常评论。在月底,评论最多的人获胜。我为此编写了完美的逻辑......直到今天。
当一个页面的评论超过900条时,投票计数器就会停止上升。我认为这与分页有关,所以我改变了我的FQL查询,使用LIMIT和OFFSET一次解析100条评论,并将结果合并到我的计票计数功能中,但是在运行我的查询时(即使是手动,放入地址栏中的https://graph.facebook.com/comments url)它会在500到600条评论之间扯掉,所以网页上最后400条左右的评论甚至都没有回复!
由于此方法失败,是否有更可靠的方式来获取评论数据?
更新:我提供了一些代码,但我发现FQL中的问题与图谱API中的问题一样。这是我的图形API调用:
https://graph.facebook.com/comments/?ids=http://www.burlesquebitch.com/article.php?id=538&limit=500
如果您将限制超过600,超过900条评论存在(或添加一个会使结果超出该范围的偏移量),它就会开始失败。早先的评论消失了。当我计算结果时,它们介于500-600之间。
https://graph.facebook.com/comments/?ids=http://www.burlesquebitch.com/article.php?id=538&limit=1000
然后我终于让fql工作了:
$fql_query_result = file_get_contents("https://graph.facebook.com/fql?q=SELECT+object_id,+id,+text,+time+,+fromid+FROM+comment+WHERE+object_id='366760226746431'+LIMIT+1000");
$data = json_decode($fql_query_result,true);
它也失败了,但更像是800-900左右。在任何情况下,不良行为都是一样的。我甚至做了一些实验,在那里我通过时间来限制查询,希望通过将我的结果隔离到日期范围,我会将自己置于其失败的阈值之内:
$fql_query_result = file_get_contents("https://graph.facebook.com/fql?q=SELECT+object_id,+id,+text,+time,+fromid+FROM+comment+WHERE+object_id='366760226746431'+AND+time>1365984000+AND+time<1366416000+LIMIT+500");
$data = json_decode($fql_query_result,true);
但没有骰子。如果我翻转&lt;到&gt;在我的时间比较中,整个查询失败并且什么都不返回。理想我想得到分页信息,如下面的答案所示,但我不能在我的查询中选择...如果我尝试得到任何以_cursor结尾的查询返回空。
我不得不得出结论,无论Graph API代码中存在什么可怕的错误,它都会扩展到FQL代码中。我知道没有其他方法可以从这个大小的facebook对象获取数据。
答案 0 :(得分:1)
您应该尝试使用光标分页,建议按照https://developers.facebook.com/docs/reference/api/pagination/
中的说明进行操作光标分页下的返回结果更符合限制 请求,即使隐藏了您没有的任何记录 查看权限(例如,如果您请求10条记录,但没有 权限可以查看其中3条记录,另外还有3条记录 透明地拉动,以便拉出完整的10条记录。)
post_id_cursor的示例:
SELECT text, post_id, post_id_cursor FROM comment WHERE post_id='22707976849_10151395520781850' ORDER BY time DESC limit 50
您获得最后评论的post_id_cursor,然后使用&gt; post_id_cursor 符号导航下一页
SELECT text, post_id, post_id_cursor FROM comment WHERE post_id='22707976849_10151395520781850' AND post_id_cursor>'Mjg3NA==' ORDER BY time DESC limit 50
object_id_cursor的示例相同:
SELECT text, post_id, object_id_cursor FROM comment WHERE object_id='10151395520696850' ORDER BY time DESC limit 50
SELECT text, post_id, time, object_id_cursor FROM comment WHERE object_id='10151395520696850' AND object_id_cursor>'Mjg3NA==' ORDER BY time DESC limit 50
确保您在应用高级设置中启用了“2013年7月重大更改:”字段, https://developers.facebook.com/apps/YOUR_APP_ID/advanced。有关详情,请访问https://developers.facebook.com/roadmap