【发布时间】:2016-09-14 14:14:41
【问题描述】:
我正在使用 PHP (SDK v5) 开发一个 facebook 应用程序。我需要获取用户具有管理员权限的页面的帖子,并为每个帖子计算它的喜欢/cmets/shares。
使用 Graph API 我最终得到了这个解决方案:
$fb = new Facebook\Facebook([
'app_id' => 'XXX',
'app_secret' => 'XXX',
'default_graph_version' => 'v2.7',]);
$pageId = //find the page id
$accessToken = //and the access token
$response = $fb->get('/'.$pageId.'/feed', (string) $accessToken);
$response = $response->getDecodedBody();
$pagePosts = $response['data'];
foreach ($pagePosts as $post) {
//query for the likes and count them
$likesResponse = $fb->get('/'.$post['id'].'/likes', (string) $accessToken);
$likesObject = $likesResponse->getDecodedBody();
echo 'likes count: '.count($likesObject['data']).'<br>';
//comments and shares similar to likes
}
我认为上述解决方案远非完美,因为对于每个 Facebook 帖子,都会执行三个额外的调用(喜欢、评论、分享)。它的性能和可扩展性很糟糕。
现在为了提高性能,我计划使用 FQL,但我偶然发现了 facebook FQL 文档中的这条评论:
自 2016 年 8 月 8 日起,FQL 将不再可用且无法使用 查询。
所以我的问题是:
有没有人知道另一种有效检索喜欢/cmets/shares 的方法,甚至是提高当前解决方案性能的方法?
【问题讨论】:
-
当然,要求所有喜欢并自己计算它们真的很糟糕。将限制设置为 0,并请求摘要。 developers.facebook.com/docs/graph-api/reference/v2.7/object/…
-
感谢您的回答。所以我仍然会循环浏览所有帖子并分别请求喜欢、cmets 和分享?不同的是,我会要求提供会减少信息量的摘要?
-
不,您可以直接通过
/feeds端点询问信息;请参阅此处的语法示例,stackoverflow.com/a/36479531/1427878 循环应该变得不必要了。在将其放入代码之前使用 Graph API Explorer 进行尝试和测试,developers.facebook.com/tools/explorer -
刚刚测试过,效果很好。非常感谢你!我将通过关注您的 cmets 发布我最终得到的答案。如果你愿意,你也可以发布答案,我会接受的。再次感谢您的帮助。
标签: php facebook facebook-graph-api facebook-php-sdk