Facebook API获取帖子分享计数

时间:2016-07-28 23:24:02

标签: php facebook api

我正在尝试使用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

任何帮助将不胜感激。谢谢!

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');
    }
}