我是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
字段。
解答: 答案可以在下面找到。
答案 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']