从谷歌登录javascript获取所有用户的联系人列表(包括电话号码)

时间:2013-11-17 10:12:08

标签: javascript google-contacts

我正在尝试通过谷歌登录获取所有用户联系人的联系电话。我收到联系人姓名,电子邮件和其他详细信息,但不是联系电话。我是专门尝试联系API v3。

this official link

提供了获取联系方式(包括电话号码)的方法,但我不确定如何在javascript中执行此操作。我搜索了一下,发现人们正在使用联系人API v2和v1来获取此信息。但即使在那里,我找不到任何合适的例子。我目前使用谷歌api(gapi)的实现给了我这种格式的联系人

  

displayName:“Jamie Lannister”   etag:“”XXXXXXXX -YYYYYYYYYYYYYYYYYY / Wl9XXXXXXXXXXXXXZ9-cJsx-wUY“”   id:“107108760XXXXXXXXXXXX”   图像:对象   网址:“https://lh4.googleusercontent.com/-9Iyxxxxxxx/xxxxxxxxxxxxxxx/xxxxxxxxxxk/xxxxxx-xxx/photo.jpg?sz=50”    proto :对象   善良:“加#person”   objectType:“person”   网址:“https://plus.google.com/107108760XXXXXXXXXXXX

我从此link和此link得到了这个。

我的问题是,是否真的可以通过电话号码获取用户的谷歌+或谷歌联系人?如果是,请在这里回答。还有其他办法吗?

哦顺便说一句,这个问题还没有资格获得赏金。正确答案在接下来的两天内获得+50赏金。

1 个答案:

答案 0 :(得分:0)

我使用以下 javascript 功能(httpGet)来获取带有姓名和号码的Google通讯录。我通过“theUrl”参数的网址是:“https://www.google.com/m8/feeds/contacts/user.email@gmail.com/full?access_token=”+ authToken +'& max-results = 9999'“

function httpGet(theUrl)
    {
        $.ajax({
            type: "GET",
            url: theUrl,
            dataType: "jsonp",
            success: function (xml) {               
                $(xml).find('entry').each(function(){
                    var name = '';
                    var number = '';
                    $(this).find("gd\\:phoneNumber").each(function(){
                        number = $(this).text();
                    });
                    $(this).find("title").each(function(){
                        name = $(this).text();
                    });

                    if(number!=null && number.length>0)
                    {
                        number = number.replace(/[^0-9]/g,'');
                        userContacts.push(name+'-'+number);
                    }
                });


            },
        });
    }

说明: 默认情况下,谷歌会返回特定数量的联系人,以使所有联系人在max-results参数中传递一个非常大的数字(因此为9999)。 authToken是您授权用户后获得的。 电子邮件地址:在获得authtoken后,您还可以查询电子邮件地址。我是怎么做到的:

function getEmail(){
        gapi.client.load('oauth2', 'v2', function() {
            var request = gapi.client.oauth2.userinfo.get();
            request.execute(getEmailCallback);
        });
    }

function getEmailCallback(obj){
        email = '';
        if (obj['email']) {
            email = obj['email'];
            //here you get the email address of the user who just signed in
        }
    }
这里的gapi是google的api javascript对象。添加这个脚本,你很高兴

script type="text/javascript" src="http://www.google.com/jsapi"/ (add jQuery script too)

如果没有httpGet()中的ajax调用,您将收到跨域合规性错误。在你提到的url的httpGet之后收到的是一个xml文件,httpGet()方法中的整个成功批次用于解析那个xml,你还会收到一堆其他信息,如果需要解析那些(我只需要联系)号码和名称)。如果你想要一个有联系人的谷歌帐户,只需登录google contacts并在那里添加一些测试电话号码。

毋庸置疑,您还需要客户端ID,密码,API密钥等。有关详细信息,请转到下面提供的链接。 httpGet()中的用户联系人var包含由连字符分隔的所有用户联系人。 httpGet()中的正则表达式模式是仅从联系人号码中选择数字,否则您可能会得到类似这样的内容(123)456 7890。

更多详情straight from google