我正在尝试使用PHP Facebook API(php-sdk-v4)获取帖子共享次数。
现在我可以获得我想要的大部分信息,但看起来共享计数的格式不同。
这是我的代码的基本示例。
$request = $this->fb->get(
"/$id/posts?fields=id,message,shares,likes.limit(1).summary(true),comments.limit(1).summary(true)&limit=10"
);
$posts = $request->getGraphEdge();
对于返回的 $ posts ,我可以使用此代码遍历并检索大多数字段所需的信息:
$id = $post->getField( 'id' );
$message = $post->getField( 'message' );
检索喜欢和评论有点不同,但我能够使用它来获取它:
$likes = $post->getField( 'likes' )->getTotalCount();
$comments = $post->getField( 'comments' )->getTotalCount();
我遇到的问题是共享计数作为“GraphNode”对象返回,当我尝试使用getTotalCount时出现错误。对象 $ post-> getField('shares')如下所示:
[shares] => Facebook\GraphNodes\GraphNode Object
(
[items:protected] => Array
(
[count] => 1
)
)
我无法找出检索此变量的正确方法,在这种情况下, 1 。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
尝试这种方式,我认为它是正确的"。在要求$graphNode->getField('shares')
之前检查->getField('count')
是否为空非常重要。
$request = $fb->get('/' . $id . '/posts?fields=id,message,shares,likes.limit(1).summary(true),comments.limit(1).summary(true)&limit=10');
foreach ($request->getGraphEdge() as $graphNode) {
// Sometimes "getField" function can return a null value
if ($graphNode->getField('shares')) {
$numberShares = $graphNode->getField('shares')->getField('count');
}
}