我试图使用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调用以获得我正在寻找的内容。
我希望有更好的方法。有什么建议吗?
答案 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。
之后,你需要保存结果并用一些逻辑对它们进行排序,并根据你的需要进行调整。
祝你好运。