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

And*_*old 1 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
Run Code Online (Sandbox Code Playgroud)

然后使用这些结果中的post-Id来检索该特定帖子的洞察.

/[post-Id]/insights
Run Code Online (Sandbox Code Playgroud)

这可能会导致我进行大量的API调用以获得我正在寻找的东西.

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

And*_*old 7

我使用如下所示的批量图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');
    }
);
Run Code Online (Sandbox Code Playgroud)

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

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

干杯.