难以获得谷歌加一计数

Aba*_*bie 2 php google-plus-one

我一直在互联网上搜索如何获得programaticaly谷歌加一键计数.最后我发现这篇文章 这里是arcticle中提到的Php脚本.

<?php

 $url = "http://www.tomanthony.co.uk/";

 $ch = curl_init();   
 curl_setopt($ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ"); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));


 $curl_results = curl_exec ($ch);
 curl_close ($ch);

 $parsed_results = json_decode($curl_results, true);

 echo $parsed_results[0]['result']['metadata']['globalCounts']['count'];

?>
Run Code Online (Sandbox Code Playgroud)

我尝试了一切,我已经坐了3个小时,但可以让它工作.但它似乎对他非常好.它是完全直接和简单的脚本.

我甚至使用firebug来检查请求.我尝试用找到的一个替换post数据值.

[{"method":"pos.plusones.get","id":"pos.plusones.get","params":{"cdx":"cb4","id":"http://www.tomanthony.co.uk/google_plus_one_api_example.php","source":"widget","container":"http://www.tomanthony.co.uk/google_plus_one_api_example.php","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"pos.plusones.get","apiVersion":"v1"}]
Run Code Online (Sandbox Code Playgroud)

我不知道我哪里错了.它只是一个简单的代码.

小智 6

可能是卷曲不接受服务器CA的问题.您可以通过以下方式找到:

$curl_results = curl_exec ($ch);
echo curl_error($ch);
Run Code Online (Sandbox Code Playgroud)

如果确实存在不受信任的CA的问题,则有两种选择.不安全和简单的方法是添加一个卷曲选项:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Run Code Online (Sandbox Code Playgroud)

这会禁用检查.第二个选项(更好,更复杂)是转到https://clients6.google.com并导出CA证书并将其提供给curl,如下所示:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/exported.crt");
Run Code Online (Sandbox Code Playgroud)