Сложность получения google плюс один счет

Я искал по всему Интернету, как получить программный google плюс одно количество кнопок. Наконец, я нашел эту статью. Вот сценарий 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']; ?> 

Я пробовал все, я сидел на нем в течение 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"}] 

У меня нет подсказки, где я ошибаюсь. У него просто простой код.

Solutions Collecting From Web of "Сложность получения google плюс один счет"

Вероятно, проблема с завихрением, не принимающим CA сервера. Вы можете точно узнать:

 $curl_results = curl_exec ($ch); echo curl_error($ch); 

Если это действительно проблема с ненадежным ЦС, у вас есть два варианта. Небезопасным и простым способом было бы добавить еще один вариант зависания:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

Это отключает проверку. Второй вариант (лучше и немного сложнее) состоял бы в том, чтобы перейти на https://clients6.google.com и экспортировать сертификат ЦС и кормить его так, чтобы он завивался:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/exported.crt"); 

Пути cURL и API, перечисленные в других сообщениях, больше не работают.

Существует по крайней мере один метод , но он уродлив, и Google явно не поддерживает его. Вы просто копируете переменную из исходного кода JavaScript для официальной кнопки с регулярным выражением:

 function shinra_gplus_get_count( $url ) { $contents = file_get_contents( 'https://plusone.google.com/_/+1/fastbutton?url=' . urlencode( $url ) ); preg_match( '/window\.__SSR = {c: ([\d]+)/', $contents, $matches ); if( isset( $matches[0] ) ) return (int) str_replace( 'window.__SSR = {c: ', '', $matches[0] ); return 0; }