15

我正在尝试使用Google Contacts API v3

由于 OAuth2 身份验证和授权,我从Google APIs Client Library for JavaScript开始。我对 API 访问的那部分没有任何问题。

但是在完成身份验证部分之后,我不知道下一步该做什么。我可以将google-api-javascript-client用于 Google Contacts API v3 吗?在javascript-client 支持的 Google API 列表中,联系人 API 不会出现。但我可以完全访问OAuth 2.0 Playground 工具

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

4

7 回答 7

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));
});
于 2013-08-29T17:17:59.170 回答
4

我知道这是一个老问题,但是在查看如何从 Google 帐户读取联系人信息时会出现这个问题。

如果您只需要访问联系人以将其导入或显示电子邮件、电话号码或其他信息而无需修改,则可以使用人员 API ( https://developers.google.com/people /)。对于 javascript,您可以查看示例选项卡。

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

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

于 2016-03-24T00:03:15.970 回答
3

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

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

于 2013-01-02T23:50:10.110 回答
2

不幸的是,Google 联系人 API 无法与新的 Javascript 客户端库一起使用。它仅适用于 GData 客户端库。我尝试过使用 GData 客户端库,但是这很困难,因为您在每个时刻都会在文档中收到该库已被弃用的警告。

因此,我使用了氢化物,

  1. 使用新的客户端库,以获得身份验证。
  2. 使用 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 或 vanilla js 以及 如何在没有 JQuery 的情况下从 Javascript 发出 JSONP 请求?

您需要提供自己的 YOURCLIENTID,并定义 processContacts 函数。

gdata.io.handleScriptLoaded(data) 是必要的,因为这是 url 在回调期间所期望的。

我使用7000的限制,但我认为没有必要。

如果您不想使用 JSONP,您可以将 access_token 转发到您的网络服务器,并在那里处理 URL,例如使用 cURL 或使用 Node.js,只需将 json-in-script 替换为 json。

在 json-in-script 在浏览器中很重要,否则浏览器会发牢骚。

感谢此页面上的其他答案,这为我指明了正确的方向。

我希望 Google 将使联系人 API 能够与新的 Javascript 客户端库一起使用。我希望其他人同时能够使用此解决方案。

于 2015-02-04T12:40:24.150 回答
0

要使用 Google plus 获取联系人列表,请使用:-

<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 从谷歌开发者控制台获取客户端 ID。

于 2015-04-14T07:30:53.770 回答
0

这是我们发现用于获取个人数据的方法:

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

如果您运行 JSON.stringify(data) 您可以看到所有可以调用的标头。

于 2015-10-12T15:45:15.057 回答
-3

google contact v3 是你这份工作最好的朋友

在这里您可以找到所有可能的请求端点 https://developers.google.com/google-apps/contacts/v3/

就像所有联系人列表一样,这是终点 https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

获得身份验证后,您可以请求此 url 以获取所有联系人列表,这是 python http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example 中的一个示例。 py

于 2013-01-02T19:29:48.750 回答