Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google联系人API与Google JavaScript客户端库_Javascript_Google Api_Google Contacts Api_Google Api Js Client - Fatal编程技术网

Google联系人API与Google JavaScript客户端库

Google联系人API与Google JavaScript客户端库,javascript,google-api,google-contacts-api,google-api-js-client,Javascript,Google Api,Google Contacts Api,Google Api Js Client,我试着和你一起工作 由于OAuth2身份验证和授权,我开始使用。 我对API访问的这一部分没有任何问题 但是在完成了auth部分后,我不知道下一步该做什么。我可以使用Google Contacts API v3的吗?在中,联系人API不会出现。但我可以完全访问 我真的很困惑哪个客户端最适合使用最新的GoogleContactsAPI。谷歌联系人v3是你这份工作最好的朋友 在这里,您可以找到所有可能的请求端点 与所有联系人列表一样,这是结束点 获取身份验证后,您可以对该url执行get请求以获

我试着和你一起工作

由于OAuth2身份验证和授权,我开始使用。 我对API访问的这一部分没有任何问题

但是在完成了auth部分后,我不知道下一步该做什么。我可以使用Google Contacts API v3的吗?在中,联系人API不会出现。但我可以完全访问


我真的很困惑哪个客户端最适合使用最新的GoogleContactsAPI。谷歌联系人v3是你这份工作最好的朋友

在这里,您可以找到所有可能的请求端点

与所有联系人列表一样,这是结束点

获取身份验证后,您可以对该url执行get请求以获取所有联系人列表
这是python中的一个示例。您遇到的问题是,Contacts API v3是一个旧API,可以与不推荐的API一起使用。因此,它与较新版本不兼容


现在,您需要加载并使用GData客户端库。有关GData库和Google api客户端之间差异的更多信息,请参阅最近的SO问题:

要使用带有gapi(Google JS客户端库)提供的身份验证令牌的v3 contacts api,使用
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));
});

不幸的是,GoogleContactsAPI不能与新的Javascript客户端库一起使用。它仅适用于GData客户端库。我尝试使用GData客户机库,但这很困难,因为文档中每次都会出现警告,指出该库已被弃用

所以我用了氢化物

  • 使用新的客户端库,以获得身份验证
  • 使用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);
      }
    }
    
    
    .....
    函数contactsInit(){
    var clientId='YOURCLIENTID.apps.googleusercontent.com';
    var作用域https://www.google.com/m8/feeds';
    gapi.auth.authorize({
    client_id:clientId,作用域:scopes,immediate:false},
    手工(结果);
    函数handleAuthResult(authResult){
    if(authResult&!authResult.error){
    变量url=
    "https://www.google.com/m8/feeds/contacts/default/" + 
    “脚本中的full?alt=json&access_token=“+
    authResult.access_令牌+
    “&max results=7000&v=3.0”;
    var myJSONP=newrequest.JSONP({
    url:url,
    callbackKey:'jsoncallback',
    数据:{
    },
    onRequest:函数(url){
    //创建脚本标记时,src等于url
    },
    onComplete:函数(数据){
    //请求已完成。
    }
    }).send();
    }
    }
    }
    函数骨架(){}
    如果(!gdata){
    var gdata=新骨架();
    gdata.io=新骨架();
    gdata.io.handleScriptLoaded=函数(数据){
    处理联系人(数据);
    }
    }
    
    注: 我在JSONP中使用Mootools,但您也可以在JSONP中使用jquery或vanilla js

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

    gdata.io.handleScriptLoaded(数据)是必需的,因为这是url在回调期间所期望的

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

    如果您不想使用JSONP,您可以将access_令牌转发到您的Web服务器,并在那里处理URL,例如使用cURL或Node.js,只需将脚本中的json替换为json即可

    在json中,脚本在浏览器上很重要,否则浏览器会发出嘎嘎声

    多亏了这一页上的其他答案,这为我指明了正确的方向


    我希望Google能够使Contacts API能够与新的Javascript客户端库配合使用。我希望其他人也能同时使用此解决方案。

    要使用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));
        }
    });
    
    
    函数auth(){
    变量配置={
    “客户端id”:“OAUTH\u客户端id”,
    '范围':'https://www.google.com/m8/feeds'
    };
    gapi.auth.authorize(配置,函数(){
    fetch(gapi.auth.getToken());
    });
    }
    函数获取(令牌){
    $.ajax({
    url:“https://www.google.com/m8/feeds/contacts/default/full?access_token=“+token.access_token+”&alt=json”,
    数据类型:“jsonp”,
    成功:功能(数据){
    log(JSON.stringify(data));
    }
    });
    
    }

    在HTML正文中:-

    <button onclick="auth();">GET CONTACTS FEED</button>
    
    获取联系人提要
    
    输出将作为包含电话号码的联系人字段


    确保使用正确的重定向uri从google开发者控制台获取客户端id。

    这就是我们发现的获取单个数据的方法:

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

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

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

    如果只需访问联系人即可导入或显示电子邮件、电话号码或其他信息,而无需修改,则可以使用People API()。对于javascript,您可以查看示例选项卡

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


    感谢您的澄清!我正在尝试使用GData客户端库。遗憾的是,身份验证不起作用。我认为这是一个普遍的问题,因为它也不起作用。。希望这是暂时的问题。有更新吗?这似乎问题仍然存在,我无法使用(或者可能我不知道),谷歌联系人api v3。有人找到解决方案了吗?注意:这受到跨源策略的限制,所以javascript客户端库无法做到这一点?load('contacts','v3',function(){});例如?太棒了,这节省了我的时间。我遇到了同样的问题,我首先检索了一个访问令牌,然后