2011-09-13 16 views
25

Ho aggiunto un pulsante Google google a un sito Web, ma voglio ottenere il suo contatore in modo da poter fare alcuni calcoli su di esso. è possibile inserire l'iframe creato dal metodo standard di creazione del pulsante +1 o devo effettuare qualche aggiustamento?Come ottengo il contatore di un pulsante google plus +1?

<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> 
<g:plusone></g:plusone> 

Ho provato questo link: 1, ma questo non è molto accurato

risposta

26

Se è possibile accedere a curl/file_get_contents/readfile/wget o qualche modo per recuperare un URL esterno, questo è abbastanza semplice.

carico il seguente URL: https://plusone.google.com/_/+1/fastbutton?url=URLENCODED_URI (URL aggiornato, vedi nota sotto *)

URLENCODED_URI è il sito che si desidera conoscere il numero di +1 per, ad esempio, http://www.google.com (http% 3A% 2F% 2Fwww.google.com)

Ad esempio, recuperare l'URI https://plusone.google.com/_/+1/fastbutton?url=http://www.google.com/ (AGGIORNAMENTO URI) e la prima occorrenza di window.__SSR = {'c': 32414.0 ,'si'. Preferibilmente usa regexp per questo, ma lascerò l'implementazione a te e al tuo linguaggio di programmazione scelto (lato server o lato client).

Il numero di float successivo a 'c' è il numero di +1 del sito. Per google.com questo è 32,414. Non preoccuparti del float, puoi tranquillamente convertirlo in un numero intero.

* AGGIORNAMENTO: L'URL è stato aggiornato poiché il vecchio URL ha iniziato a 404. Si ricorda che questo è previsto poiché si tratta di un metodo non ufficiale. Non esiste alcun metodo ufficiale (ancora).

+0

Apparentemente è un modo per andare. Farò un tentativo e pubblicare i risultati qui più tardi. – seemann

+0

ti dispiacerebbe dirmi come l'hai capito, o dove hai trovato questa risposta? – seemann

+2

Ho ispezionato il traffico di rete causato dal pulsante più su alcuni siti (i crediti vanno all'adorabile WebKit Inspector di Safari e Chrome) e ho scoperto che si comportavano tutti in un certo modo e tutti chiamavano un certo URL che a sua volta restituito html e javascript. Ho trovato che il javascript conteneva il numero di + 1, indipendentemente dal fatto che il numero di +1 fosse rappresentato come 32k, 'centinaia' o 14. –

4

Potrebbe utilizzare una funzione di callback per afferrare il valore del div che visualizza il conteggio?

function count() { 
    var count = $('#aggregateCount').html(); 
} 

    <g:plusone callback="count()"></g:plusone> 

sto basando questa via il bubble annotation button, non ho ancora testato, ma qualcosa di simile dovrebbe funzionare.

+0

Per quanto ne so l'attributo callback, viene chiamato solo una volta che l'utente fa clic sul pulsante. – seemann

+0

ah, che dire di un carico di lavoro allora? – barro32

+0

Non riesco a trovare quell'evento, @ barro32. Gli eventi disponibili sono tutti correlati all'interazione dell'utente. – seemann

2

Una soluzione puramente client che funziona per me per ottenere il contatore di Google Plus è la seguente. Non ha bisogno di una chiave API.

var url = "http://www.yoursite-to-be-counted.com"; 
var data = { 
    "method":"pos.plusones.get", 
    "id": url, 
    "params":{ 
     "nolog":true, 
     "id": url, 
     "source":"widget", 
     "userId":"@viewer", 
     "groupId":"@self" 
    }, 
    "jsonrpc":"2.0", 
    "key":"p", 
    "apiVersion":"v1" 
    }; 
    $.ajax({ 
    type: "POST", 
    url: "https://clients6.google.com/rpc", 
    processData: true, 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    success: function(r){ 
     setCount($(".google-plus-count"), r.result.metadata.globalCounts.count); 
    } 
    }); 

    var setCount = function($item, count) { 
    if (count) { 
     $item.text(count); 
    } 
    }; 

Poi ho qualche html con

<div class="google-plus-count"></div> 

Crediti qui va a this risposta.

Problemi correlati