我正在尝试通过谷歌登录获取所有用户联系人的联系电话。我收到联系人姓名,电子邮件和其他详细信息,但不是联系电话。我是专门尝试联系API v3。
提供了获取联系方式(包括电话号码)的方法,但我不确定如何在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
我的问题是,是否真的可以通过电话号码获取用户的谷歌+或谷歌联系人?如果是,请在这里回答。还有其他办法吗?
哦顺便说一句,这个问题还没有资格获得赏金。正确答案在接下来的两天内获得+50赏金。
答案 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。