使用 Javascript 中的 Google People API 获取联系人电子邮件地址
Get contact email addresses using Google People API in Javascript
我想检索用户的联系人的电子邮件地址。我打算使用Google People API。这是我要检索的函数:
function makeApiCall() {
gapi.client.load('people', 'v1').then(function() {
var request = gapi.client.people.people.connections.list({
resourceName: 'people/me',
pageSize: 200,
fields: 'connections(resourceName)'
});
request.execute(function(resp) {
if (resp.connections){
var batch = gapi.client.newBatch();
var emails = [];
for(var i = 0; i < resp.connections.length; i++){
var req = gapi.client.people.people.get({
resourceName: resp.connections[i].resourceName,
fields: "emailAddresses(value)"
});
batch.add(req);
req.then(function (email){
var idx = email.body.indexOf("{");
var jsonString = email.body.substring(idx > 0 ? idx : 0);
var obj;
try {
obj = JSON.parse(jsonString);
if (obj.emailAddresses){
for (j = 0; j < obj.emailAddresses.length; j++){
emails.push(obj.emailAddresses[j].value);
}
}
} catch (err) {
console.error(email);
}
})
}
batch.then(function (){
console.log(emails);
}, function (err){
console.error(err);
});
} else {
console.error("Error", resp);
}
});
}, function (err){
console.error(err);
});
}
基本上,我正在获取 200 个连接来检索他们的资源名称.
此资源名称将用于获取用户的电子邮件地址.
我正在使用批处理请求来获取 200 个用户的电子邮件。
问题是,对于某些用户,我收到以下错误:
{
"error": {
"code": 429,
"message": "Insufficient tokens for quota group and limit ReadGroupUSER-100s using the limit by ID 991457241470@515501272068.",
"status": "RESOURCE_EXHAUSTED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developer console API key",
"url": "https://console.developers.google.com/project/991457241470/apiui/credential"
}
]
}
]
}
}
可能是什么原因以及如何解决此问题?
最后,我得到了解决方案。它使用Google API登录,并使用AJAX调用来获取联系人详细信息。
function getEmailList($scope, callback, fetchBeginCallback) {
_googleLogin(AppConstants.GOOGLE_API.scopes.contactEmailListing, function(err) {
if (err) {
$scope.$apply(function() {
callback(err);
});
} else {
fetchBeginCallback ? fetchBeginCallback() : $.noop();
var emails = [];
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + gapi.auth.getToken().access_token + "&alt=json&max-results=1000",
dataType: 'jsonp'
}).done(function(data) {
var entries = data.feed.entry;
for (var i = 0; i < entries.length; i++) {
if (entries[i].gd$email) {
if (emails.indexOf(entries[i].gd$email[0].address) < 0) {
emails.push(entries[i].gd$email[0].address);
}
}
}
callback(undefined, emails);
}).fail(function(jqXHR, textStatus, errorThrown) {
callback(errorThrown, emails);
});
}
});
}
function _googleLogin(scope, callback) {
gapi.auth.authorize({
client_id: AppConstants.GOOGLE_API.clientId,
scope: scope,
immediate: false
}, function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
callback();
} else {
callback(authResult ? authResult.error : "Empty Response");
}
});
}
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 获取所有用户's的联系人列表(包括电话号码)来自javascript中的谷歌登录
- 使用 javascript 获取 google 联系人
- 使用科尔多瓦在安卓中无法正常工作,从手机中获取联系人
- 使用 Javascript 中的 Google People API 获取联系人电子邮件地址
- 在 xmpp 中获取联系人的花名册(例如,朋友的朋友或 MUC 中联系人的朋友)
- 使用 Gnome-Shell JS 界面获取联系人列表
- Windows live api获取电子邮件联系人与电子邮件哈希
- 从javascript中获取google联系人api的名称
- 正在获取垃圾邮件注册和联系人表单提交
- 如何用html5和js在iPhone上获取联系人
- 从Outlook Office REST API获取联系人计数
- 电话间隙:获取联系人姓名,但不能获取号码
- 联系人表单-无法获取要发送的电子邮件
- 从Windows Live获取联系人的电话号码
- Google Contacts Api获取某个群组中的联系人.(我的联系人组)
- 获取谷歌联系人API系统组