2011-09-13 19 views
25

he añadido un botón de Google +1 a una página web, pero quiero conseguir es contador para que pueda hacer algunos cálculos sobre ella. ¿Es posible ingresar el iframe creado por el método estándar para crear el botón +1 o necesito hacer algún ajuste?¿Cómo obtengo el contador de un botón de google plus +1?

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

He probado este enlace: 1, pero esto no es muy precisa

Respuesta

26

Si puede acceder rizo/file_get_contents/readfile/wget o de alguna manera a buscar una URL externa, esto es bastante simple.

carga la siguiente URL: https://plusone.google.com/_/+1/fastbutton?url=URLENCODED_URI (URL actualizada, ver nota más abajo *)

URLENCODED_URI es el sitio que desea conocer el número de +1 para, por ejemplo, http://www.google.com (http% 3A% 2F% 2Fwww.google.com)

Por ejemplo, buscar el URI https://plusone.google.com/_/+1/fastbutton?url=http://www.google.com/ (ACTUALIZADA URI) y localice la primera ocurrencia de window.__SSR = {'c': 32414.0 ,'si'. Preferiblemente, use la expresión regular para esto, pero le dejaré la implementación a usted y a su lenguaje de programación elegido (del lado del servidor o del lado del cliente).

El número flotante siguiente 'c' es el número de +1 en el sitio tiene. Para google.com esto es 32,414. No se preocupe por el flotador, puede convertirlo de manera segura en un número entero.

* ACTUALIZACIÓN: La URL se ha actualizado como la antigua URL comenzó a 404. Recuerde, esto se espera, ya que este es un método no oficial. No existe un método oficial (todavía).

+0

Aparentemente es un camino por recorrer. Lo probaré y publicaré los resultados aquí más tarde. – seemann

+0

¿te importaría decirme cómo descubriste esto o dónde encontraste esta respuesta? – seemann

+2

que inspeccionó el tráfico de red causado por el botón de más de unos pocos sitios (créditos va al inspector WebKit preciosa en Safari y Chrome), y se informó de que todos ellos se comportaban de una manera determinada, y todos ellos llamaron una cierta URL que a su vez devuelto html y javascript. Encontré que javascript contenía el número de +1, independientemente de si el número de +1 se representaba como 32k, 'cientos' o 14. –

4

Podría utilizar una función de devolución de llamada para agarrar el valor de la div que muestra el recuento?

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

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

Estoy basando esto de la bubble annotation button, yo no lo he probado, pero algo como esto debería funcionar.

+0

Por lo que yo entiendo el atributo de devolución de llamada, es sólo llama una vez que el usuario hace clic en el botón. – seemann

+0

ah, ¿qué tal una carga entonces? – barro32

+0

no puedo encontrar ese evento, @ barro32. Los eventos disponibles están relacionados con la interacción del usuario. – seemann

2

Una solución del lado del cliente pura que funciona para mí para conseguir el contador Google Plus es la siguiente. No necesita una clave 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); 
    } 
    }; 

Entonces tengo algo de html con

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

Créditos aquí va a this respuesta.

Cuestiones relacionadas