通过AJAX获取谷歌+1页面分享(隐藏的Api)

时间:2014-02-03 09:51:00

标签: jquery ajax cross-domain google-plus

努力寻找通过jQuery获取 Google Plus +1页面的解决方案 - 来自Google隐藏的api的Ajax:https://clients6.google.com/rpc

此问题也在以下网址进行了讨论:Stackoverflow link

我的尝试:

$.ajax({
    cache: false,
    type: "POST",
    url: "https://clients6.google.com/rpc",
    data: [{
        "method":"pos.plusones.get",
        "id":"p",
        "params":{
            "nolog":true,
            "id":"http://www.apple.com",
            //"id":"http%3A%2F%2Fwww.apple.com",
            "source":"widget",
            "userId":"@viewer",
            "groupId":"@self"
            },
            "jsonrpc":"2.0",
            "key":"p",
            "apiVersion":"v1"
    }],
    crossDomain: true,
    jsonp: true,
    timeout: 5000,
    dataType: "jsonp",
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        console.log(data);
    },
    always: function(data){
        console.log(data);
    }
});

结果为chrome:Uncaught SyntaxError:意外的标记:

在Firefox中: SyntaxError:missing;在陈述之前

{“error”:{“code”: - 32700,“message”:“Parse Error”,“data”:[{“domain”:“g

有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您可以使用google plus javascript库来获取共享计数:

包括以下内容:

<script src="https://apis.google.com/js/plusone.js"></script>
<script src="https://apis.google.com/js/client:plusone.js"></script>

然后做:

var params = {
  nolog: true,
  id: "http://www.google.com/",
  source: "widget",
  userId: "@viewer",
  groupId: "@self"
};

gapi.client.setApiKey('AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ')
gapi.client.rpcRequest('pos.plusones.get', 'v1', params).execute(function(resp) {
  console.log('count:', resp.result.metadata.globalCounts.count)
});

不要用自己的apikey替换apikey。如果你这样做将无法正常工作。

答案 1 :(得分:2)

您应该使用官方API for Google+获取+1点数。 API资源管理器中的以下示例显示了API调用和响应数据:

https://developers.google.com/apis-explorer/#p/plus/v1/plus.people.get?userId=%252BGooglePlusDevelopers&fields=plusOneCount&_h=2&

如何使用API​​客户端库的简短演示:

1)同步包含Google+客户端/ Google API客户端库

<script type="text/javascript">
(function() {
  var po = document.createElement('script');
  po.type = 'text/javascript'; po.async = true;
  po.src = 'https://plus.google.com/js/client:plusone.js';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(po, s);
})();
</script>

当客户端加载时,使用Google APIs console

中的密钥设置API密钥
gapi.client.setApiKey('YOUR_API_KEY')

接下来,加载回调并在加载客户端后发出API调用。

<script>
gapi.client.load('plus', 'v1', 
  function(){ 
    gapi.client.plus.people.get(
      {userId: '+GooglePlusDevelopers'}
    ).execute( function(resp){ console.log(resp); }
    );
  });
</script>

这将返回包含+1计数的JSON数据,例如:

gapi.client.load('plus', 'v1', 
  function(){ 
    gapi.client.plus.people.get(
      {userId: '+GooglePlusDevelopers'}
    ).execute( function(resp){ console.log(resp.plusOneCount); }
    );
  });

将返回225588,页面的计数为+ 1。