使用wp_Remote_POST检索Google Plus共享计数

时间:2012-09-02 作者:Joern

所以,我早上大部分时间都在研究网站上定制的社交分享按钮。读取Twitter和Facebook的共享信息没有问题,但Google Plus是一个真正的挑战,因为它们不提供易于使用的GET API。

我发现了一种使用裸骨卷曲的工作技术(http://www.tomanthony.co.uk/blog/google_plus_one_button_seo_count_api/comment-page-1/ ). 但之前,我曾努力让它与Wordpress的功能(如wp\\u remote\\u post)配合使用,但失败了。谁能告诉我我做错了什么?

以下是我设法聚在一起的内容。两个不同的请求失败:

$google_url = \'https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ\';
$headers    = array(\'Content-type\' => \'application/json\');
$body       = array( "method"   => "pos.plusones.get"
                    ,"id"       => "p"
                    ,"params"   => array(   "nolog"     => true
                                            ,"id"       => $url
                                            ,"source"   => "widget"
                                            ,"userId"   => "@viewer"
                                            ,"groupId"  => "@self"
                                        )
                    ,"jsonrpc"  =>"2.0"
                    ,"key"      => "p"
                    ,"apiVersion" => "v1"
                );

$response = wp_remote_post( $google_url , array( \'method\'   => \'POST\'
                                                ,\'headers\'  => $headers
                                                ,\'body\'     => $body    ) );

if (!is_wp_error($response)) {
    $resp = json_decode($response[\'body\'],true);
    _e($response[\'body\']);
}
else
{
    _e(\'error\');
}
// Another attempt to get data with WP_Http 
$request = new WP_Http;
$result = $request->request( $google_url , array( \'method\' => \'POST\', \'body\' => $body, \'headers\' => $headers ) );

if (!is_wp_error($result)) {
    $resp = json_decode($result[\'body\'],true);
    _e($result[\'body\']);
}
else
{
    _e(\'error AGAIN\');
}
附言:API密钥是开发人员的公共密钥。

1 个回复
SO网友:Deniz Fuchidzhiev

我知道这个问题已经2年了,但我花了两天的时间努力找到了同一个问题的解决方案,这是我的代码(对我来说,它100%有效)。

$json_string = wp_remote_request(\'https://clients6.google.com/rpc\',
array(
    \'method\'    => \'POST\',
    \'body\'      => \'[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"\'.rawurldecode(get_permalink()).\'","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]\',
    \'headers\' => array(\'Content-Type\' => \'application/json\')
));

$json = json_decode($json_string[\'body\'], true);



if(isset($json[0][\'result\'][\'metadata\'][\'globalCounts\'][\'count\'])){
   echo intval($json[0][\'result\'][\'metadata\'][\'globalCounts\'][\'count\']);
}else{
   echo\'0\';
}
与上面代码的最大区别是,我以JSON格式发送请求,而不是以数组的形式发送。

结束

相关推荐

curl problem or permalinks

我刚刚配置了我的VPS,我使用的是Centos,一切都很好,但如果我将永久链接设置为自定义结构,然后接受主页,没有帖子出现,它会显示404页,我想这是因为我没有启用curl,但我不知道我的php在哪里。我的centos中的ini文件?好的,我的卷曲被启用了,我检查过了phpinfo(); 这里是URLhttp://74.117.158.182/info.php但如果我在我的wordpress中设置了永久链接,那么接受主页,所有都会给我404页,你可以在这个URL上查看http://mbas.co.in如果