【问题标题】:Limit Number of Posts coming from /feed Facebook Graph API限制来自 /feed Facebook Graph API 的帖子数量
【发布时间】:2014-05-06 08:49:33
【问题描述】:

当我使用 /{page_id}/feed?access_token=xxxx 时,这会给我页面上的所有帖子,包括用户和页面。我想限制和控制帖子。我想设置如下约束:

  1. 时间戳(即在特定时间戳之后获取帖子)
  2. 帖子 ID(在特定帖子之后获取帖子)

由于从提要中获取所有帖子是不相关且无效的。有没有办法做到这一点?

【问题讨论】:

  • 我认为您应该将 Tobi 的答案标记为正确答案。 :)
  • 声誉不够。只需 6 个。需要 15 个。

标签: facebook facebook-graph-api


【解决方案1】:

你可以使用

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

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

对于您的第二个用例,您需要使用 Batch API 恕我直言,因为对于单个 Graph 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"}]

这至少对我有用。

【讨论】:

  • 是的,post_id 不正确。更新了我的答案。
  • 不客气,但是“我在 FQL 中所做的其他无法用图形复制的事情”是什么意思?即使在一批中,您也可以将 FQL 与“普通”图形 API 请求混合使用......并且,请注意,FQL 仅在 2015 年 4 月 30 日之前有效!
  • For Tobi developers.facebook.com/docs/apps/changelog FQL 在 2.0 版中仍然可用,但在 API 的下一版本中将不可用。发出此早期警告,以便开发人员可以尽快开始从 FQL 迁移到 Graph API。我们强烈建议开发人员不要基于 FQL 构建新体验。绝大多数用例都可以使用 Graph API 来实现,包括字段扩展和批量请求。
  • 比如/102099916530784/posts?limit=10&fields=id,message,comments.since(1400112000).limit(10).fields(message,created_time,like_count,comments.fields(message,created_time))呢?
  • 你说得对,developers.facebook.com/docs/apps/versions#howlong 表示 v2.0 将提供 2 年,developers.facebook.com/docs/apps/changelog#v2_0_fql 表示 FQL 将成为 v2.0 的一部分
【解决方案2】:

对于寻求解决方案的其他人,似乎忽略了在“评论”和“回复”级别完成的“自从”。这意味着这不是我的解决方案。

Tobi 提供的查询将提供第一个“since”之后的所有帖子,但这些帖子中的每条评论和回复,无论您将其“since”设置为。

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

也就是说,感谢 Tobi 抽出宝贵时间向我展示了如何在一个函数调用中获得所需的一切。我可能每次都尝试解析完整的记录集。 (不过可能流量太多了!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多