2011-09-13 3 views
25

Я добавил кнопку google +1 на веб-сайт, но я хочу получить ее счетчик, чтобы я мог немного почитать ее. можно ли ввести iframe, созданный стандартным методом создания кнопки +1, или мне нужно внести некоторую корректировку?Как получить счетчик кнопки google plus +1?

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

Я пробовал эту ссылку: 1, но это не очень точно

ответ

26

Если вы можете получить доступ к curl/file_get_contents/readfile/wget или каким-либо образом получить внешний URL-адрес, это довольно просто.

Загрузите следующий URL: https://plusone.google.com/_/+1/fastbutton?url=URLENCODED_URI (ОБНОВЛЕНО URL, смотрите примечание ниже *)

URLENCODED_URI это сайт, который вы хотите знать количество + 1-х для, например, http://www.google.com (HTTP% 3A% 2F% 2Fwww.google.com)

Например, принести URI https://plusone.google.com/_/+1/fastbutton?url=http://www.google.com/ (ОБНОВЛЕНО URI) и найти первый из window.__SSR = {'c': 32414.0 ,'si' вхождение. Предпочтительно использовать regexp для этого, но я оставлю реализацию вам и выбранному языку программирования (стороне сервера или стороне клиента).

Номер плавающего числа 'c' - это число + 1 на сайте. Для google.com это 32 414. Не беспокойтесь о поплавке, вы можете безопасно преобразовать его в целое число.

* UPDATE: URL-адрес обновлен, так как старый URL-адрес начался с 404. Помните, что это ожидается, поскольку это неофициальный метод. Официального метода пока нет.

+0

Видимо, это путь. Я дам ему попробовать и опубликовать результаты здесь позже. – seemann

+0

Не могли бы вы рассказать мне, как вы это поняли, или где вы нашли этот ответ? – seemann

+2

Я проверил сетевой трафик, вызванный кнопкой «плюс» на нескольких сайтах (кредиты передаются прекрасному инспектору WebKit в Safari и Chrome) и выяснили, что все они ведут себя определенным образом, и все они называют определенный URL-адрес, который, в свою очередь, вернул html и javascript. Я обнаружил, что в javascript содержится число + 1, независимо от того, было ли число + 1 представлено как 32k, «сотни» или 14. –

4

Вы могли бы использовать функцию обратного вызова, чтобы захватить значение DIV, который отображает количество?

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

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

Я основывая это от bubble annotation button, я не проверял, но что-то, как это должно работать.

+0

Насколько я понимаю атрибут callback, он вызывается только после нажатия пользователем кнопки. – seemann

+0

ах, а как насчет onload тогда? – barro32

+0

Я не могу найти это событие, @ barro32. Доступные события связаны с взаимодействием с пользователем. – seemann

2

Чистое клиентское решение, которое работает для меня, чтобы получить счетчик Google Plus, выглядит следующим образом. Ему не нужен ключ 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); 
    } 
    }; 

Тогда у меня есть некоторые HTML с

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

Кредитом здесь идет в this ответ.