13

我使用graph api来获取图片的评论,但是我想先通过创建时间对结果进行排序,然后返回最新的数据。类似sql语句order by create_time desc,不知道有没有这样的参数。

目前用来抵消和限制获取最新数据,也知道评论总数,

pagesize = 25;
offset = comments.count - pagesize;
limit = 25;

url = "https://graph.facebook.com/" + object_id + "/comments?access_token=" + access_token + "&limit=" + limit + "&offset=" + limit;

下一页:</p>

offset -= 25

但comments.ount 的数值有时并不准确

与返回的请求 URL 的结果有时不匹配

是否有很好的解决方案

或者我用错了方式('limit'和'offset'参数)!!!


谢谢您的回答。

“图形API”缓存的存在?

我发布一条消息和 46 个comments.requests url,设置参数:

偏移量=0&限制=1

然后应该返回最后一条评论(最新一条),实际返回到中间一条评论,我测试了几次,设置了offset和limit。根据返回的结果,中间是最新的评论

如果我设置的limit值大于'comment.count',返回的数据就是all,官网和facebook一致

因为缓存的原因?

再次感谢~

4

2 回答 2

5

@dbau - 最好还是使用 FQL。根据我的经验,除非您进行非常简单的调用,否则您几乎无法控制通过 Graph API 调用获得的内容。

为什么不想使用 FQL?FQL 是 Graph API 的一个端点。还有一些数据只能通过 FQL 返回。

这将为您提供您正在寻找的结果。查询需要进行 URL 编码。为了清楚起见,我将其保留为纯文本。

 https://graph.facebook.com/fql?access_token=[TOKEN]&q=
    SELECT id, fromid, text, time, likes, user_likes FROM comment
      WHERE object_id = [OBJECT_ID] ORDER BY time DESC LIMIT 0,[N]

[N]您可能会发现每次都没有收到评论,因为 Facebook 过滤掉了在运行查询access_token所有者不可见的项目。您可以提高 LIMIT 并过滤掉返回的任何多余结果,或者如果您使用的是 user ,则可以添加到子句以保证,如果它们存在,则返回当前用户可见的帖子。access_tokenAND can_like = TRUEWHERE[N]

于 2012-08-04T03:43:44.790 回答
3

Graph API 首先返回最新的对象。

Facebook 提供了 2 个关键字来过滤获取的数据。

  1. 限制:返回“限制”最新记录数
  2. Offset :从偏移位置返回“限制”记录数

因此,要检索为对象发布的最新“x”评论

https://graph.facebook.com/[OBJECTID]?limit=[X]&offset=0

检索下一个“X”评论(页面明智)

https://graph.facebook.com/[OBJECTID]?limit=[X]&offset=[X*PAGENo]

希望答案对您来说足够清楚。

于 2011-10-12T16:13:21.437 回答