从Page Post Likes'summary'获取'total_count' - Facebook PHP SDK(已关闭)

时间:2016-06-23 20:19:54

标签: php facebook facebook-graph-api facebook-php-sdk

我是PHP和Facebook PHP SDK的新手,我希望从Facebook页面帖子的'like_count' 'likes'获取'summary'。我当前的代码包含以下内容:

$response = $fb->get('/me/posts?fields=admin_creator,likes.limit(0).summary(true)&limit=30');
$getLikeCount = $response->getGraphEdge()->asArray();
foreach($getLikeCount as $likekey){
    if(isset($likekey['likes'])){
        var_export($likekey['likes']);
        foreach ($likekey['likes'] as $likekey){
            //echo $likekey['total_count'] . '<br>';
        }
    }
}

var_export($likekey['likes']);导出空白数组,而var_export($likekey['summary']);返回NULL。但是,在Graph API Explorer中,它返回以下内容:

{
      "admin_creator": {
        "name": "NAME",
        "id": "ID"
      },
      "id": "ID",
      "likes": {
        "data": [
        ],
        "summary": {
          "total_count": 1022,
          "can_like": true,
          "has_liked": false
        }
      }
    },

如何访问'total_count'字段,因为通过我的'likes'和“summary'方法访问该字段不起作用。

编辑:使用getGraphEdge()->asArray();无效,因为它不会返回摘要数组。我会以某种方式从getDecodedBody();或其他方法获取值。如果我使用$getLikeCount = $response->getDecodedBody();,请使用以下代码:

foreach($getLikeCount as $key){
    if(isset($key['admin_creator'])){
        echo $key['admin_creator']['name'];
    }
}

它不返回任何东西。我使用'admin_creator'作为示例,因为它适用于$getLikeCount = $response->getGraphEdge()->asArray();并且在我当前的方法中不起作用但是我不能使用此方法,因为我试图从'total_count'字段获取使用'summary'方法时,'likes'帖子'summary'getGraphEdge()未显示在数组中,仅在使用getDecodedBody();时显示。我想知道是否有办法从getDecodedBody()获取值,或者是否有解决方法从total_count获取summary字段。

解答: 答案可以在下面找到。

3 个答案:

答案 0 :(得分:5)

您可以在不进行更多API调用的情况下找到此数据。 摘要数据隐藏在字段的元数据中。评论和反应都是一样的。

$response = $fb->get('/me/posts?fields=id,likes.limit(0).summary(true)');
foreach ($reponse->getGraphEdge() as $graphNode) {
    // Some fields can have metadata
    $likesData =  $graphNode->getField('likes')->getMetaData();
    echo 'The total of likes for the post ID "' .  $graphNode->getField('id') . '" is: '. $likesData['summary']['total_count'];
}

答案 1 :(得分:2)

我找到了解决方法。

解决方法需要找到帖子ID,然后再做另一个请求才能获得该帖子的“喜欢”字段。

$response = $fb->get('/me/posts?fields=admin_creator,likes.limit(0).summary(true)&limit=30');
$getPostID = $response->getGraphEdge()->asArray();
foreach($getPostID as $IDKey){
    if(isset($IDKey['id'])){
        $currentPostID = $IDKey['id'];
        $likesResponse = $fb->get('/'.$currentPostID.'/likes?limit=0&summary=true');
        echo $currentPostID . '<br>'; //optional
        $getLikeCount = $likesResponse->getGraphEdge();
        $currentLikeCount = $getLikeCount->getTotalCount();
        echo $currentLikeCount . '<br>';
    }
}

答案 2 :(得分:0)

尝试

$getLikeCount['likes']['summary']['total_count']