gpt4 book ai didi

node.js - 无法在 Node.js 中将 Gmail 联系人与 passport-google-oauth 同步

转载 作者:搜寻专家 更新时间:2023-11-01 00:17:59 25 4
gpt4 key购买 nike

我是 passport.js 的新手。我正在使用它来验证和获取 Gmail 联系人,为了获取我需要通过 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 时,我只得到用户详细信息,而不是联系人列表。我不知道,我为得到它做了什么。任何帮助将不胜感激。

谢谢。

最佳答案

以下步骤用于获取 Gmail 联系人

1- 要与任何 Google API 通信,我们需要在 Google console 上创建一个帐户

2- 创建项目后,我们希望与 Google API 通信,创建项目后,Google 会提供 secret keyclient key 用于与 Google API 通信谷歌。每当我们的应用程序尝试与任何 Google API 通信时,都需要这些 key 。

3- 为了获取 Gmail 联系人,Google 提供了 https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx

4- 我们只需要调用这个 API 来获取联系人,这个 API 在通信之前需要一些凭证。

5- 用户必须已使用 Google 登录并拥有 API 用于获取用户联系人的 token 。

6- 通常我们更喜欢 passport Google strategy使用谷歌登录。我们有一半的事情是由 Passport.js 完成的,例如使用 Google 和 token 进行身份验证。

7- 当用户使用 Google 登录时,Passport.js 充当成功登录的中间件,在此期间,passport 提供当前用户的 token 。那时我们正在调用联系人 API https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=xxxxxx

我们很容易获得 token ,Google 创建的 token 在一小时后过期,但我们不必担心,因为 passport 内部提供了 Google 提供的新 token 。

希望它对你有用。


更新

让我们玩转REST API

Get all the contacts通过使用 REST 调用

使用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) {

});

关于node.js - 无法在 Node.js 中将 Gmail 联系人与 passport-google-oauth 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com