Question

J'ai cherché partout sur Internet sur la façon de programaticaly google plus un nombre de boutons. Enfin je l'ai trouvé cette article Voici le script Php mentionné dans le arcticle.

<?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'];

?>

J'ai tout essayé, je suis assis là-dessus pendant 3 heures, mais pourrait le faire au travail. Mais il semble fonctionner parfaitement pour lui fine.It est parfaitement simple scénario avant et droit.

J'ai même utilisé Firebug pour examiner la requests.I a essayé substituant la valeur des données post avec un i trouvé.

[{"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"}]

Je n'ai pas la moindre idée où suis-je wrong.Its vais juste un simple code.

Était-ce utile?

La solution

Probablement un problème avec boucle ne pas accepter l'autorité de certification du serveur. Vous trouverez à coup sûr avec:

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

S'il est en effet un problème avec le CA non sécurisé, vous avez deux options. L'insécurité et facile serait d'ajouter une option plus à boucle:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Cela désactive la vérification. La deuxième option (mieux et un peu plus compliqué) serait d'aller à https://clients6.google.com et exporter le certificat CA et le nourrir à boucle comme ceci:

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

Autres conseils

La façon cURL et API figurant dans les autres postes ici de ne fonctionne plus.

Il est toujours au moins 1 méthode , mais il est laid et Google ne permet manifestement pas. Vous venez de déchirer la variable sur le code source JavaScript pour le bouton officiel avec une expression régulière:

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top