如何使用图形API Insights(JavaScript)获得最受欢迎的Facebook页面帖子

时间:2015-07-21 19:12:03

标签: javascript facebook-graph-api facebook-insights

我试图使用JavaScript Insights API获取属于某个网页的效果最佳的Facebook帖子列表。但是,我似乎无法通过一次API调用找到一种方法。 我已经在这里填写了文档:https://developers.facebook.com/docs/graph-api/reference/v2.4/insights

除非我遗漏了某些内容,否则似乎无法简单地检索热门帖子列表,并在结果中包含参与/喜欢/分享/评论等。您可以获得一般统计信息,例如页面上所有帖子的完全参与度,但没有任何内容可以通过帖子分解。

我能想到的唯一一件事是使用Graph API来获取网页帖子的列表。

/[page-Id]/posts

然后使用这些结果中的post-Id来检索该特定帖子的见解。

/[post-Id]/insights

这可能会导致我进行大量的API调用以获得我正在寻找的内容。

我希望有更好的方法。有什么建议吗?

2 个答案:

答案 0 :(得分:6)

我使用如下所示的批量图API调用找出了此问题的解决方案:https://developers.facebook.com/docs/graph-api/making-multiple-requests

在我的情况下,我需要从Facebook页面获得每个帖子的印象,参与度,喜欢,评论和分享。为实现这一目标,我打了一个类似的电话。

var pageName = 'YourFacebookPage',
    yourToken = 'YourAccessToken';

FB.api('/', 'POST', {
    access_token: yourToken,
    batch: 
        [
            { 
                method: 'GET',
                name: 'get-posts',
                relative_url: pageName + '/posts'
            },
            {
                method: 'GET',
                relative_url: '?ids={result=get-posts:$.data.*.id}'
            },
            {
                method: 'GET',
                relative_url: pageName + '/insights/post_impressions/lifetime?ids={result=get-posts:$.data.*.id}'
            },
            {
                method: 'GET',
                relative_url: pageName + '/insights/post_engaged_users/lifetime?ids={result=get-posts:$.data.*.id}'
            },
            {
                method: 'GET',
                relative_url: 'likes?ids={result=get-posts:$.data.*.id}'
            },
            {
                method: 'GET',
                relative_url: 'comments?ids={result=get-posts:$.data.*.id}'
            },
            {
                method: 'GET',
                relative_url: 'sharedposts?ids={result=get-posts:$.data.*.id}'
            }
        ]
    }, function (response) {
        console.log(JSON.parse(response[1].body), 'post details');
        console.log(JSON.parse(response[2].body), 'impressions');
        console.log(JSON.parse(response[3].body), 'engagement');
        console.log(JSON.parse(response[4].body), 'likes');
        console.log(JSON.parse(response[5].body), 'comments');
        console.log(JSON.parse(response[6].body), 'shares');
    }
);

不幸的是,Facebook并未将这些回复结合起来。每个调用都会作为响应的单独属性返回,因此您需要在显示UI之前将不同的指标组合到一个对象中。

这对我有用,希望它可以帮助其他人解决同样的问题。

欢呼声。

答案 1 :(得分:1)

不幸的是,我还没有找到一种简单的方法来从页面获取这些热门帖子,而无需手动完成。我使用的是FQL:

select post_id, comment_info.comment_count, like_info.like_count, share_info.share_count from stream where source_id={Page ID} AND author_id = {Page ID}

您可以直接在Here上使用FQL 如果您需要页面ID,只需要对/ page-name请求,并且应该返回页面名称及其页面ID。

之后,你需要保存结果并用一些逻辑对它们进行排序,并根据你的需要进行调整。

祝你好运。