Abrufen der Google Plus-Freigaben mit wp_remote_post

Also habe ich den größten Teil meines Vormittags damit verbracht, auf den benutzerdefinierten Social-Share-Buttons meiner Website zu arbeiten. Das Auslesen von Twitter- und Facebook-Freigaben war kein Problem, aber Google Plus ist eine echte Herausforderung, da sie keine einfach zu verwendende GET-API bieten.

Ich fand eine Arbeitstechnik mit Barebones CURL ( http://www.tomanthony.co.uk/blog/google_plus_one_button_seo_count_api/comment-page-1/ ). Aber zuvor habe ich versucht, es mit WordPress-functionen wie wp_remote_post und fehlgeschlagen zu arbeiten. Kann mir jemand sagen, was ich falsch gemacht habe?

Hier ist, was ich geschafft habe zusammen zu kommen. Zwei verschiedene Anfragen scheitern:

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

PS: Der API-Schlüssel ist ein öffentlicher Schlüssel für Entwickler.

Solutions Collecting From Web of "Abrufen der Google Plus-Freigaben mit wp_remote_post"

Ich sehe, dass die Frage 2 Jahre alt ist, aber ich arbeitete hart zwei Tage, um Lösung des gleichen Problems zu finden, und hier ist mein Code (für mich arbeitet 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'; } 

Der große Unterschied zum obigen Code besteht darin, dass ich eine Anfrage im JSON-Format und nicht als Array sende.