如何在没有访问令牌的情况下获取 Google 个联系人?
How to get Google contacts without access token?
已更新
在 access token
的帮助下我仍然得到了答案 :)
并且要提到它。
我正在使用 Google contacts API
获取 user
个联系人。
我正在使用 passport.js 通过 Google 登录并在 passport's access token
的帮助下我正在调用 API
https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token
并获得所有 contacts
但我需要用其他东西代替 access token
,比如 secret key
或 client key
.
因为每次我需要 log in
和 Google
同步 contacts
如果用户添加 newly contact
。
我做了 Google
但没有得到任何解决方案。
任何想法都会对我有所帮助。
这是我获取联系人的代码
var getGoogleContacts = function(token, userId) {
var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token;
request(url, function(error, response, body) {
if (error) {
console.log(error);
} else {
var contacts = JSON.parse(body);
saveGoogleContacts(userId, contacts);
}
});
};
/*Get contacts and store in user_contact table*/
var saveGoogleContacts = function(userId, contacts) {
var gContacts = [];
contacts.feed.entry.forEach(function(contact, index) {
if (contacts.feed.entry[index].gd$email) {
gContacts.push([
null, null, contacts.feed.entry[index].title.$t, "'" + contacts.feed.entry[index].gd$email[0].address + "'",
1, userId, 0
]);
}
});
if (gContacts.length > 0) {
user.insertContacts(gContacts, function(err, result) {
if (err) {
console.log(err);
} else {
console.log('contacts saved: ' + result);
}
});
}else{
console.log('No records available');
}
};
我得到答案了。
正如我提到的,我正在使用 passport.js
登录 Google
并且在登录过程中 passport
默认提供 access token
和 refresh token
refresh token
将是 null
。
如果你想得到refresh token
你需要在验证过程中通过parameter
accessType:offline
,像这样
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email','https://www.google.com/m8/feeds'],accessType: 'offline', approvalPrompt: 'force' }));
在那之后你会得到 refresh token
并将它保存在任何永久的地方,因为它不会是 expire
并且可以在任何你想得到 access token
[=29= 的时候使用]
要获得 access token
我正在使用 refresh-token 模块。
打完电话后 token
只需拨打电话 API
即可获取联系人。
像这样
var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token;
request(url, function(error, response, body) {
if (error) {
cb(error);
} else {
var contacts = JSON.parse(body);
cb(null, contacts);
}
});
}
就是这样。
已更新
在 access token
的帮助下我仍然得到了答案 :)
并且要提到它。
我正在使用 Google contacts API
获取 user
个联系人。
我正在使用 passport.js 通过 Google 登录并在 passport's access token
的帮助下我正在调用 API
https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token
并获得所有 contacts
但我需要用其他东西代替 access token
,比如 secret key
或 client key
.
因为每次我需要 log in
和 Google
同步 contacts
如果用户添加 newly contact
。
我做了 Google
但没有得到任何解决方案。
任何想法都会对我有所帮助。
这是我获取联系人的代码
var getGoogleContacts = function(token, userId) {
var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token;
request(url, function(error, response, body) {
if (error) {
console.log(error);
} else {
var contacts = JSON.parse(body);
saveGoogleContacts(userId, contacts);
}
});
};
/*Get contacts and store in user_contact table*/
var saveGoogleContacts = function(userId, contacts) {
var gContacts = [];
contacts.feed.entry.forEach(function(contact, index) {
if (contacts.feed.entry[index].gd$email) {
gContacts.push([
null, null, contacts.feed.entry[index].title.$t, "'" + contacts.feed.entry[index].gd$email[0].address + "'",
1, userId, 0
]);
}
});
if (gContacts.length > 0) {
user.insertContacts(gContacts, function(err, result) {
if (err) {
console.log(err);
} else {
console.log('contacts saved: ' + result);
}
});
}else{
console.log('No records available');
}
};
我得到答案了。
正如我提到的,我正在使用 passport.js
登录 Google
并且在登录过程中 passport
默认提供 access token
和 refresh token
refresh token
将是 null
。
如果你想得到refresh token
你需要在验证过程中通过parameter
accessType:offline
,像这样
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email','https://www.google.com/m8/feeds'],accessType: 'offline', approvalPrompt: 'force' }));
在那之后你会得到 refresh token
并将它保存在任何永久的地方,因为它不会是 expire
并且可以在任何你想得到 access token
[=29= 的时候使用]
要获得 access token
我正在使用 refresh-token 模块。
打完电话后 token
只需拨打电话 API
即可获取联系人。
像这样
var url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results=999999&alt=json&oauth_token=' + token;
request(url, function(error, response, body) {
if (error) {
cb(error);
} else {
var contacts = JSON.parse(body);
cb(null, contacts);
}
});
}
就是这样。