如何使用Graph API获取Facebook页面中的帖子总数?

时间:2014-10-25 08:34:33

标签: facebook facebook-graph-api

我正在使用Facebook Graph API从公共页面抓取信息。目前的问题是如何获得Facebook页面上的帖子总数。如果我们转到/ {page-id} / posts,它将只返回此页面上发布的25个帖子,并且没有摘要信息提到该页面的字段。我已经检查了上一个答案,似乎唯一的方法是计算下一个链接的项目数并获得总数。但效率很低。是否有任何方法可以直接在FQL以外的页面上获取总帖子?

4 个答案:

答案 0 :(得分:2)

Facebook没有主动计算网页发布的帖子数量;根据页面,它可能是一个天文数字。

您必须自己获取所有帖子并通过它们计算。我会用这样的东西。

{PAGE}/posts?fields=id&limit=250

它将返回您需要的最小可能数据集。你不能超过250,你可以使用FQL但不能使用v2.1。此外,您不需要FEED,因为这是页面的帖子和其他用户对页面发布的帖子的聚合。这将返回这样的对象。

{
 "data" : [
  PostData
  ... ],
 "paging" : {
  ...
  "next" : CursorURL
 }
}

这是光标网址,因此您可以按相反的时间顺序降低250个帖子的组。

每次获得也会返回更多帖子的新光标时,您可以通过递增250来缩短计数。由于最后一个光标将返回一个空数据数组,因此您只需计算并在第2到最后一个光标的集合中添加结果。

答案 1 :(得分:2)

     function p_post() {
                FB.api("/209652442394600/posts?fields=admin_creator,name&limit=250", function (response) {
                    var t = response.data.length;
                    document.getElementById('tposts').innerHTML = t;
            });
            }

它工作到250,我上周使用它

答案 2 :(得分:0)

您只能检索页面上已发布帖子的摘要/计数。直接查询网页时,类似的方法会起作用:

ArrayList<Integer> i = new ArrayList<Integer>();

i.add(1);
i.add(1);
i.add(3);
i.add(5);

响应将类似于:

{PAGE}?fields=published_posts.limit(1).summary(total_count).since(1)

或者如果您想直接查询{ published_posts: { summary: { total_count: 12345 }, ... } } ,请使用:

published_posts

响应将类似于:

{PAGE}/published_posts?limit=1&summary=total_count&since=1

{ summary: { total_count: 12345 }, ... } 设置为1可确保您的查询不会不必要地大。如果您只需要总数,则将limit设置为1。

limit参数是unix时间戳(自1970年1月1日以来的毫秒数),并且它是检索总帖子数所必需的。将其设置为1,因为将其设置为0会引发错误。

更多详细信息:https://developers.facebook.com/docs/graph-api/reference/page/published_posts/

答案 3 :(得分:-1)

您可以尝试添加/page/posts?limit=1000,但我不确定是否有效。您也可以尝试使用/page/feed查看是否获得了所需的结果。如果这些都不起作用,那么很可能您无法检索帖子的总数。此外,FQL明年将被弃用。