从节点中的 Google api 获取联系人
Getting contacts from Google api in node
我想在 nodejs 中使用 google 联系人 api 获取联系人,但是在 nodejs 的 developer.google 页面上没有任何快速入门。
我在 github https://github.com/hamdipro/google-contacts-api 上找到了这个包装器,但我不理解它,也不知道如何使用它。
谁能告诉我该怎么办?
首先,不要使用有问题的非官方包,你应该更喜欢使用官方包,因为它们维护得很好,引擎盖下的每个更改都得到妥善处理,并且还考虑了所产生的问题。
同样的官方包是 here。
现在使用上述包获取用户联系人的步骤:-
- 使用
npm install googleapis --save
包含 googleapis
创建服务客户端
var google = require('googleapis');
var contacts = google.people('v1');
授权客户端发出请求 {Link for authentication docs}
发出经过身份验证的请求
contacts.people.connections.list({
auth: oauth2Client //authetication object generated in step-3
}, function (err, response) {
// handle err and response
});
这应该足以获取用户的联系数据。如果您将此用于 gmail 以外的域并具有管理员访问权限,则还用于身份验证,您可以使用 domain wide delegation 获取所有用户的联系人,否则您将必须手动允许每个用户访问.
希望对您有所帮助。如果有任何疑问,请在评论中告诉我。
不幸的是,Google 的 NodeJS 官方 API 不支持联系人 API。他们改用人民 API。如果您需要访问 "Other Contacts",您将需要联系人 API。
如果您已经将其用于其他目的,您仍然可以使用 API 连接联系人 API,方法是在创建授权客户端后向联系人 API 发送请求.
鉴于您已经拥有用户的访问令牌(例如,如果您使用 Passport 生成它,代码如下:
const {google} = require("googleapis");
const authObj = new google.auth.OAuth2({
access_type: 'offline',
clientId: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET,
});
访问令牌过期前自动刷新
authObj.on('tokens', (tokens) => {
const access_token = tokens.access_token
if (tokens.refresh_token){
this.myTokens.refreshToken = tokens.refresh_token
// save refresh token in the database if it exists
}
this.myTokens.accessToken = tokens.access_token
// save new access token (tokens.access_token)
}
authObj.setCredentials({
access_token:this.myTokens.accessToken,
refresh_token:this.myTokens.refreshToken,
});
向联系人发出请求 API:
authObj.request({
headers:{
"GData-Version":3.0
},
params:{
"alt":"json",
//"q":"OPTIONAL SEARCH QUERY",
//"startindex":0
"orderby":"lastmodified",
"sortorder":"descending",
},
url: "https://www.google.com/m8/feeds/contacts/default/full"
}).then( response => {
console.log(response); // extracted contacts
});
我想在 nodejs 中使用 google 联系人 api 获取联系人,但是在 nodejs 的 developer.google 页面上没有任何快速入门。 我在 github https://github.com/hamdipro/google-contacts-api 上找到了这个包装器,但我不理解它,也不知道如何使用它。
谁能告诉我该怎么办?
首先,不要使用有问题的非官方包,你应该更喜欢使用官方包,因为它们维护得很好,引擎盖下的每个更改都得到妥善处理,并且还考虑了所产生的问题。
同样的官方包是 here。
现在使用上述包获取用户联系人的步骤:-
- 使用
npm install googleapis --save
包含 googleapis
创建服务客户端
var google = require('googleapis');
var contacts = google.people('v1');
授权客户端发出请求 {Link for authentication docs}
发出经过身份验证的请求
contacts.people.connections.list({ auth: oauth2Client //authetication object generated in step-3 }, function (err, response) { // handle err and response });
这应该足以获取用户的联系数据。如果您将此用于 gmail 以外的域并具有管理员访问权限,则还用于身份验证,您可以使用 domain wide delegation 获取所有用户的联系人,否则您将必须手动允许每个用户访问.
希望对您有所帮助。如果有任何疑问,请在评论中告诉我。
不幸的是,Google 的 NodeJS 官方 API 不支持联系人 API。他们改用人民 API。如果您需要访问 "Other Contacts",您将需要联系人 API。
如果您已经将其用于其他目的,您仍然可以使用 API 连接联系人 API,方法是在创建授权客户端后向联系人 API 发送请求.
鉴于您已经拥有用户的访问令牌(例如,如果您使用 Passport 生成它,代码如下:
const {google} = require("googleapis");
const authObj = new google.auth.OAuth2({
access_type: 'offline',
clientId: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET,
});
访问令牌过期前自动刷新
authObj.on('tokens', (tokens) => {
const access_token = tokens.access_token
if (tokens.refresh_token){
this.myTokens.refreshToken = tokens.refresh_token
// save refresh token in the database if it exists
}
this.myTokens.accessToken = tokens.access_token
// save new access token (tokens.access_token)
}
authObj.setCredentials({
access_token:this.myTokens.accessToken,
refresh_token:this.myTokens.refreshToken,
});
向联系人发出请求 API:
authObj.request({
headers:{
"GData-Version":3.0
},
params:{
"alt":"json",
//"q":"OPTIONAL SEARCH QUERY",
//"startindex":0
"orderby":"lastmodified",
"sortorder":"descending",
},
url: "https://www.google.com/m8/feeds/contacts/default/full"
}).then( response => {
console.log(response); // extracted contacts
});