繁体   English   中英

有效地检索Facebook帖子(PHP)上的点赞/分享/评论

[英]Efficiently retrieve likes/shares/comments on facebook posts (PHP)

我正在使用PHP(SDK v5)开发一个Facebook应用。 我需要获取用户具有管理员权限的页面的帖子,并且每个帖子都要计算它的喜欢/评论/分享。

使用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将不再可用,无法查询。


所以我的问题是:

有谁知道有效地检索喜欢/评论/分享的另一种方法,甚至是提高当前解决方案性能的方法?

按照@CBroe的建议,我找到了解决方案。 该解决方案需要对Graph API的单个调用,这是对(3 * posts)+1调用的极大改进:

$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?fields=likes.summary(1).limit(0),comments.summary(1).limit(0), ....', (string) $accessToken);
$response = $response->getDecodedBody();
$pagePosts = $response['data'];

foreach ($pagePosts as $post) {
  $likesObject = $post['likes'];
  $likesCount = $likesObject['summary']['total_count'];

  $commentsObject = $post['comments'];
  $commentsCount = $commentsObject['summary']['total_count'];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM