如何在 Node js 中使用 OAuth 获取用户电子邮件地址
How to Get user Email Address using OAuth in Node js
我正在编写代码以添加使用 Google 登录的功能。我已经编写了代码,但是当用户使用 google 登录时,它只给我 ID、姓名、全名等。它不提供用户电子邮件地址。谁能帮我解决这个问题?以下是我的代码
passport.use(new GoogleStrategy({
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: "http://localhost:8000/auth/google/notepad"
},
function(accessToken, refreshToken, profile, cb) {
console.log(profile);
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return cb(err, user);
});
}
));
router.get('/auth/google', passport.authenticate('google',{scope: ['profile']}));
router.get('/auth/google/notepad',
passport.authenticate('google', { failureRedirect: '/' }),
async function(req, res) {
const token = await req.user.generateAuthToken();
res.cookie('authToken', token);
res.redirect('/')
});
您缺少 email
范围。这是他们个人资料的一个单独范围。
如果您想了解更多信息,也请参阅文档:https://developers.google.com/identity/protocols/oauth2/openid-connect#scope-param
我正在编写代码以添加使用 Google 登录的功能。我已经编写了代码,但是当用户使用 google 登录时,它只给我 ID、姓名、全名等。它不提供用户电子邮件地址。谁能帮我解决这个问题?以下是我的代码
passport.use(new GoogleStrategy({
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: "http://localhost:8000/auth/google/notepad"
},
function(accessToken, refreshToken, profile, cb) {
console.log(profile);
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return cb(err, user);
});
}
));
router.get('/auth/google', passport.authenticate('google',{scope: ['profile']}));
router.get('/auth/google/notepad',
passport.authenticate('google', { failureRedirect: '/' }),
async function(req, res) {
const token = await req.user.generateAuthToken();
res.cookie('authToken', token);
res.redirect('/')
});
您缺少 email
范围。这是他们个人资料的一个单独范围。
如果您想了解更多信息,也请参阅文档:https://developers.google.com/identity/protocols/oauth2/openid-connect#scope-param