web-dev-qa-db-ja.com

グーグルプラス+1ボタンのカウンターを取得するにはどうすればよいですか?

ウェブサイトにグーグル+1ボタンを追加しましたが、それを計算できるようにカウンターを取得したいと思います。 +1ボタンを作成する標準的な方法で作成されたiframeを入力することは可能ですか、それとも調整が必要ですか?

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

私はこのリンクを試しました: 1 、しかしこれはあまり正確ではありません

25
seemann

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/UPDATED URI)をフェッチし、window.__SSR = {'c': 32414.0 ,'si'の最初の出現箇所を見つけます。これには正規表現を使用することが望ましいですが、実装はユーザーと選択したプログラミング言語(サーバー側またはクライアント側)に任せます。

'c'に続く浮動小数点数は、サイトが持つ+1の数です。 google.comの場合、これは32,414です。フロートについて心配する必要はありません。安全に整数に変換できます。

* UPDATE:古いURLが404に開始されたため、URLが更新されました。これは非公式の方法であるため、これは予想されることです。公式の方法は(まだ)存在しません。

26
Aron Cederholm

コールバック関数を使用して、カウントを表示するdivの値を取得できますか?

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

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

これは バブル注釈ボタン に基づいています。テストはしていませんが、このようなものは機能するはずです。

4
barro32

GooglePlusカウンターを取得するために機能する純粋なクライアント側のソリューションは次のとおりです。 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 answerになります。

2
Eduardo