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

get all user's contact list (including phone number) from google login in javascript

本文关键字:电话号码 来自 包括 javascript 登录 谷歌 联系人 用户 获取 列表      更新时间:2023-09-26

我正在尝试通过谷歌登录获取所有用户联系人的联系电话。我正在获取联系人姓名、电子邮件和其他详细信息,但没有获取联系人号码。我特别尝试联系API v3。

这个官方链接

提供了一种获取联系方式(包括电话号码)的方法,但我真的不知道如何在javascript中做到这一点。我在谷歌上搜索了一下,发现人们正在使用联系人API v2和v1来获取这些信息。但即使在那里,我也找不到任何合适的例子。我目前使用谷歌api(gap)的实现为我提供了这种格式的联系人

displayName:"Jamie Lannister"etag:"XXXXXXXX-YYYYYYYYYY/Wl9XXXXXXXXZ9 cJsx wUY"id:"107108760XXXXXXXXXX"图像:对象网址:"https://lh4.googleusercontent.com/-9Iyxxxxxxx/xxxxxxxxxxxxxxx/xxxxxxxxxxk/xxxxxx-xxx/photo.jpg?sz=50"proto:对象kind:"加#人"objectType:"person"网址:"https://plus.google.com/107108760XXXXXXXXXXXX

我从这个链接和这个链接得到了这个。

我的问题是,真的有可能获得用户的google+或带有电话号码的谷歌联系人吗?如果是,请在这里回答。还有别的办法吗?

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

我使用以下javascript函数(httpGet)获取带有姓名和号码的google联系人。我在"theUrl"参数中传递的url为:"https://www.google.com/m8/feeds/contacts/user.email@gmail.com/full?access_token="+authToken+'&最大结果=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
        }
    }

这里的漏洞是谷歌的api javascript对象。添加这个脚本,你就可以去了

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

如果没有httpGet()中的ajax调用,您将收到一个跨域一致性错误。在httpGet之后,您收到的是一个xml文件,httpGet()方法的全部成功之处在于解析该xml,您还将收到一堆其他信息,如果需要,也可以解析这些信息(我只需要联系电话和姓名)。如果你想要一个有联系人的谷歌账户,只需登录谷歌联系人并在那里添加一些测试电话号码。

不用说,您还需要客户端Id、机密、API密钥等。有关详细信息,请访问下面提供的链接。httpGet()中的用户联系人var包含所有用连字符分隔的用户联系人。httpGet()中的正则表达式模式是只从联系人号码中选择数字,否则您可能会得到这样的结果(123)456 7890。

更多详细信息直接来自谷歌