13

我正在尝试使用Google Contacts API v3Google Contacts API与Google JavaScript Client Lib

由于OAuth2身份验证和授权,我开始使用Google APIs Client Library for JavaScript。 我有没有这部分API访问存在问题。

但是在完成auth部分之后,我不知道下一步该怎么做。我可以使用Google Contacts API v3的google-api-javascript-client吗?在list of the supported Google APIs by the javascript-client联系人API不出现。但我完全有权访问OAuth 2.0 Playground tool

我真的很困惑哪个客户端最适合使用最新的Google Contacts API。什么是gdata-javascript-client

+0

对此有何更新?这似乎仍然存在问题,我无法使用(或可能是我不知道),谷歌联系人API v3。有没有人找到解决方案呢? –

回答

-2

谷歌接触v3是这份工作

在这里你可以找到所有更多钞票请求端点 https://developers.google.com/google-apps/contacts/v3/

像这样所有联系人列表你最好的朋友是终点 https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

获取后身份验证,你可以做得到请求这个网址来获取所有联系人列表 这是一个例子python http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example.py

3

您遇到的问题是Contacts API v3是一个较旧的API,与已弃用的一起使用。因此它与新的Google APIs JavaScript Client不兼容。

现在您将需要加载和使用GData客户端库。有关GData库和Google API客户端之间区别的更多信息,请参阅最近的SO问题:gapi.client.load versus google.load

+0

感谢您的澄清!我正在尝试使用GData Client Lib。可悲的是验证不起作用。我认为这是一个普遍问题,因为[来自Google的交互式示例](https://developers.google.com/google-apps/contacts/v1/developers_guide_js?hl=de#Interactive_Samples)也无效。希望这是一个暂时的问题。 – einsA

9

要使用v3联系人api和gapi(Google JS客户端库)提供的身份验证令牌,是有帮助的,使用alt=&json

$.getJSON('https://www.google.com/m8/feeds/contacts/default/full/?access_token=' + 
      authResult.access_token + "&alt=json&callback=?", function(result){ 
     console.log(JSON.stringify(result)); 
}); 
+0

注意:这是受限于交叉来源的政策限制 – Jason

+0

所以有没有办法做到这一点与JavaScript客户端库? gapi.client.load( '联系人', 'V3',函数(){});例如? – rncrtr

+0

真棒,这节省了我的一天 – nathanengineer

0

不幸的谷歌联系人API不与新的JavaScript客户端库工作。它只适用于GData客户端库。我尝试过使用GData客户端库,但是因为您在文档中发现了库已被弃用的每个时刻的警告都很困难。

因此,我使用新客户端库,以获得认证所使用的氢化物,

  1. 使用URL来获取联系人,因为你需要使用JSONP跨域限制

不幸的是,否则浏览器失败。

<script src="https://apis.google.com/js/client.js"></script> 
..... 
function contactsInit() { 
    var clientId = 'YOURCLIENTID.apps.googleusercontent.com'; 
    var scopes = 'https://www.google.com/m8/feeds'; 
    gapi.auth.authorize({ 
    client_id: clientId, scope: scopes, immediate: false}, 
    handleAuthResult); 

function handleAuthResult(authResult) { 
if (authResult && !authResult.error) { 
    var url = 
    "https://www.google.com/m8/feeds/contacts/default/" + 
    "full?alt=json-in-script&access_token=" + 
    authResult.access_token + 
    "&max-results=7000&v=3.0"; 

    var myJSONP = new Request.JSONP({ 
     url: url, 
     callbackKey: 'jsoncallback', 
     data: { 
      }, 
     onRequest: function(url){ 
       // a script tag is created with a src equal to url 
      }, 
     onComplete: function(data){ 
       // the request was completed. 
      } 
     }).send(); 
    } 
} 
} 

function Skeleton() {} 
    if (!gdata) { 
    var gdata = new Skeleton(); 
    gdata.io = new Skeleton(); 
    gdata.io.handleScriptLoaded = function(data) { 
     processContacts(data); 
    } 
} 

注: 我使用MooTools的为JSONP但你也可以使用jQuery或香草JS与How to make a JSONP request from Javascript without JQuery?

您需要提供自己的YOURCLIENTID,并定义processContacts功能。

的gdata.io.handleScriptLoaded(数据)是必要的,因为这是什么网址回调过程中的期望。

我使用7000的限制,但我不认为这是必要的。

如果你不想使用JSONP您可以在转发的access_token到Web服务器,并处理URL存在,例如与cURL或与Node.js只是用json替换json-in-script。

在浏览器中,json-in-script在浏览器中非常重要,否则浏览器会发出哗哗声。

感谢这个页面上的其他答案,这指出我在正确的方向。

我希望Google能够使用新的Javascript客户端库使联系人API有效。我希望其他人能够在此期间使用此解决方案。

0

有关读取使用谷歌联系人列表,以及使用: -

<script src="https://apis.google.com/js/client.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script> 
    function auth() { 
    var config = { 
     'client_id': 'OAUTH_CLIENT_ID', 
     'scope': 'https://www.google.com/m8/feeds' 
    }; 
    gapi.auth.authorize(config, function() { 
     fetch(gapi.auth.getToken()); 
    }); 
    } 

    function fetch(token) { 
    $.ajax({ 
    url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json", 
    dataType: "jsonp", 
    success:function(data) { 
       console.log(JSON.stringify(data)); 
    } 
}); 

}

在HTML正文: -

<button onclick="auth();">GET CONTACTS FEED</button> 

输出将具有与现场包含电话号码的联系人。

请务必使用正确的重定向URI从Google开发者控制台获取客户端ID。

0

这是我们发现的工作就是让个人数据:

var data = (JSON.stringify(data.feed.entry[0].gd$email, null, 4)); 
console.log(data); 

如果运行JSON.stringify(数据),你可以看到所有你可以调用的头。

2

我知道这是一个老问题,但这个问题表明了寻找关于如何阅读从谷歌帐户中的联系人信息时。

如果您只需访问联系人以导入该联系人或显示电子邮件,电话号码或其他信息,而无需对其进行修改,则可以使用People API(https://developers.google.com/people/)。对于JavaScript,你可以检查样本选项卡。

我创建了一个gist,它几乎是来自Google的示例,但添加了requestField参数。

https://gist.github.com/ddbb1977/7a4b408ed17c7249252a

相关问题