无法将 Gmail 联系人与 Node.js 中的 passport-google-oauth 同步
Unable to sync Gmail contacts with passport-google-oauth in Node.js
我是 passport.js 的新手。
我正在使用它来进行身份验证并获取 Gmail contacts
,为了获取联系人,我需要传递 scope
值 https://www.google.com/m8/feeds
。但除了个人资料详细信息外,我没有获得联系人列表。
这是我的代码:
//register with google
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email','https://www.google.com/m8/feeds'] }));
// the callback after google has authenticated the user
app.get('/auth/google/callback', passport.authenticate('google', {
successRedirect : '/user/dashboard',
failureRedirect : '/register.html'
}));
还有我的 passport.js
代码:
passport.use(new GoogleStrategy1({
consumerKey: config.auth.googleAuth.clientID,
consumerSecret: config.auth.googleAuth.clientSecret,
callbackURL: config.auth.googleAuth.callbackURL
},
function(token, tokenSecret, profile, done) {
console.log(profile);
return done(err, user);
}
));
当我打印 profile
时,我得到的只是用户详细信息,而不是 contact list
。
我不知道,我为得到它做了什么。
任何帮助将不胜感激。
谢谢。
下面这些步骤是用来获取Gmail contacts
1- 要与任何 Google API 通信,我们需要在 Google console
上创建一个帐户
2- 之后创建一个项目,我们要与 Google API 通信,创建项目后 Google 提供 secret key
和 client key
用于与 Google 通信。每当我们的应用程序尝试与任何 Google API.
进行通信时,都需要这些密钥
3- 要获取 Gmail 联系人,Google 提供 https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx
4- 我们只需要调用这个 API 来获取联系人,这个 API 在通信之前需要一些凭证。
5- 用户必须使用 Google 登录并拥有 API 用于获取用户联系人的令牌。
6- 通常我们更喜欢 passport Google strategy 登录 Google。而我们一半的事情是由 Passport.js
完成的,比如使用 Google 和令牌进行身份验证。
7- 当用户使用 Google 登录时,Passport.js 充当成功登录的中间件,在此期间,passport 提供当前用户的令牌。那一次我们打电话给联系人 API https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx
而且我们很容易获得令牌,Google 创建的令牌将在一小时后过期,但我们不必担心,因为 passport 内部提供了 Google 提供的新令牌。
希望它对你有用。
更新
一起玩REST API
Get all the contacts 通过使用 REST call
使用request模块请求HTTP
调用
request.get({
url: 'https://www.google.com/m8/feeds/contacts/default/full',
headers: {
'Authorization': 'Bearer <Your access token>',
'Content-Type': 'application/json'
},
qs: qs,//Optional to get limit, max results etc
method: 'GET'
}, function (err, response, body) {
});
我是 passport.js 的新手。
我正在使用它来进行身份验证并获取 Gmail contacts
,为了获取联系人,我需要传递 scope
值 https://www.google.com/m8/feeds
。但除了个人资料详细信息外,我没有获得联系人列表。
这是我的代码:
//register with google
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email','https://www.google.com/m8/feeds'] }));
// the callback after google has authenticated the user
app.get('/auth/google/callback', passport.authenticate('google', {
successRedirect : '/user/dashboard',
failureRedirect : '/register.html'
}));
还有我的 passport.js
代码:
passport.use(new GoogleStrategy1({
consumerKey: config.auth.googleAuth.clientID,
consumerSecret: config.auth.googleAuth.clientSecret,
callbackURL: config.auth.googleAuth.callbackURL
},
function(token, tokenSecret, profile, done) {
console.log(profile);
return done(err, user);
}
));
当我打印 profile
时,我得到的只是用户详细信息,而不是 contact list
。
我不知道,我为得到它做了什么。
任何帮助将不胜感激。
谢谢。
下面这些步骤是用来获取Gmail contacts
1- 要与任何 Google API 通信,我们需要在 Google console
上创建一个帐户2- 之后创建一个项目,我们要与 Google API 通信,创建项目后 Google 提供 secret key
和 client key
用于与 Google 通信。每当我们的应用程序尝试与任何 Google API.
3- 要获取 Gmail 联系人,Google 提供 https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx
4- 我们只需要调用这个 API 来获取联系人,这个 API 在通信之前需要一些凭证。
5- 用户必须使用 Google 登录并拥有 API 用于获取用户联系人的令牌。
6- 通常我们更喜欢 passport Google strategy 登录 Google。而我们一半的事情是由 Passport.js
完成的,比如使用 Google 和令牌进行身份验证。
7- 当用户使用 Google 登录时,Passport.js 充当成功登录的中间件,在此期间,passport 提供当前用户的令牌。那一次我们打电话给联系人 API https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx
而且我们很容易获得令牌,Google 创建的令牌将在一小时后过期,但我们不必担心,因为 passport 内部提供了 Google 提供的新令牌。
希望它对你有用。
更新
一起玩REST API
Get all the contacts 通过使用 REST call
使用request模块请求HTTP
调用
request.get({
url: 'https://www.google.com/m8/feeds/contacts/default/full',
headers: {
'Authorization': 'Bearer <Your access token>',
'Content-Type': 'application/json'
},
qs: qs,//Optional to get limit, max results etc
method: 'GET'
}, function (err, response, body) {
});