限制来自/提供Facebook Graph API的帖子数量

时间:2014-05-06 08:49:34

标签: facebook facebook-graph-api

当我使用/ {page_id} / feed?access_token = xxxx时,这会向我提供页面上的所有帖子,包括用户和页面。我想限制和控制帖子。我想提出像:

这样的约束
  1. 时间戳(即在特定时间戳之后获取帖子)
  2. 发布ID(在特定帖子后发帖)
  3. 因为从Feed中获取所有帖子是无关紧要且无效的。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:9)

您可以使用

GET /{page_id}/feed?limit={nr_of_posts_to_return}&since={timestamp}

能够限制结果数量并指定开始时间戳。看看这里的参考文献:

对于您的第二个用例,您需要使用批处理API imho,因为只需一个图表API请求,您就无法对特定Posts进行过滤。相反,您需要使用Batch API将其拆分为两个查询,如下所述:

请求将如下所示:

curl \
    -F 'access_token={your_access_token}' \
    -F 'batch=[{ "method":"GET","name":"get-post","relative_url":"{your_post_id}?fields=created_time"},{"method":"GET","relative_url":"{your_page_id}/feed?since={result=get-post:$.created_time}&limit={nr_of_posts_to_return}"}]' \
    https://graph.facebook.com/

在Graph Explorer中,您必须将HTTP方法更改为Post,然后添加一个名为batch的新字段。到目前为止,将URL留空。将其粘贴为batch值:

[{ "method":"GET","name":"get-post","relative_url":"​293088074081904_400071946716849?fields=created_time"},{"method":"GET","relative_url":"293088074081904/feed?since={result=get-post:$.created_time}&limit=1"}]

这对我来说至少有用。

答案 1 :(得分:2)

对于寻求解决方案的其他人来说,它似乎是'因为'完成评论'并且“回复”#39;水平被忽略。这意味着这不适合我。

Tobi提供的查询将在第一个'之后提供所有帖子。但是这些帖子中的每条评论和回复,无论你设置了什么'因为'到。

除此之外,如果您希望搜索新评论,无论帖子的年龄如何,这也会失败。例如:删除第一个'自'并更改为limit = 1000并且仅使用'作为字段请求评论,因为' ,这将返回所有1000个帖子的最后1000个帖子和所有评论。

那就是说,谢谢Tobi的时间,并告诉我如何在一个函数调用中获得我需要的一切。我可以每次尝试解析完整的记录集。 (可能过多的流量!)