4

我一直在尝试使用 Fql 查询来显示帖子的所有评论。起初我显示 2 个帖子,然后当点击“显示更多评论”时,我显示接下来的 50 条评论,这样它会继续。当“显示更多评论”时,我执行以下操作通过 ajax 调用图形 api -

SELECT text,post_id  FROM comment  WHERE post_id=post_id limit 50

但是说当我第一次点击“显示更多评论”时,它显示了 52 条评论,然后当我再次点击时,它显示了大约 102 条评论。但是对于下一次点击,没有显示 152 条评论。它停留在大约 102 条评论中。

我的目标——

第一次点击“显示更多评论”=从第一条评论开始显示 52 条评论(限制值 = 52 我在查询中指定)

第二次点击 = 从第一条评论开始显示 102 条评论(限制值=102)

第三次点击 = 显示从第一条评论开始的 152 条评论(限制值 = 152)......继续

所以我无法做到这一点。我真的尝试了很多使用偏移量的方法。很多问题。有 facebook 错误吗?请尽快帮助。

4

1 回答 1

5

您应该尝试光标分页,建议如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,然后使用>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

更新:

确保您在应用程序高级设置 https://developers.facebook.com/apps/YOUR_APP_ID/advanced中启用了“2013 年 7 月重大更改:”字段。更多信息请访问 https://developers.facebook.com/roadmap

获取特定用户的提要示例:

https://developers.facebook.com/tools/explorer?fql=%7B%22query1%22%3A%22SELECT%20post_id%2C%20actor_id%2C%20created_time%2C%20message%20FROM%20stream%20WHERE%20source_id%3D611693239 %20AND%20created_time%3C%3Dnow()%20LIMIT%2050%20%22%2C%22query2%22%3A%22SELECT%20post_id%2C%20id%2C%20fromid%2C%20time%2C%20text%2C%20user_likes %2C%20likes%20FROM%20comment%20WHERE%20post_id%20IN%20(SELECT%20post_id%20FROM%20%23query1)%20LIMIT%205%20%22%2C%22query3%22%3A%22SELECT%20id%2C% 20name%2C%20pic_square%20FROM%20profile%20WHERE%20id%20IN%20(SELECT%20actor_id%20FROM%20%23query1)%20or%20id%20IN%20(SELECT%20fromid%20FROM%20%23query2)%22% 7D%0A

于 2013-05-02T07:14:53.413 回答