使用passport-google-oauth20获取用户电子邮件的步骤如下:
const GoogleStrategy = require('passport-google-oauth20').Strategy;
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "/auth/google/callback"
},
function(accessToken, refreshToken, profile, cb) {
// 在这里可以获取用户的电子邮件信息
const email = profile.emails[0].value;
return cb(null, email);
}
));
这里需要替换GOOGLE_CLIENT_ID
和GOOGLE_CLIENT_SECRET
为你自己的Google应用程序的客户端ID和客户端密钥。
app.get('/auth/google',
passport.authenticate('google', { scope: ['profile', 'email'] })
);
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
// 用户授权成功后的回调函数
res.redirect('/');
}
);
/auth/google
路由会重定向用户到Google登录页面,并请求访问用户的个人资料和电子邮件。授权成功后,用户将重定向到/auth/google/callback
路由。
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, cb) {
cb(null, user);
});
passport.deserializeUser(function(user, cb) {
cb(null, user);
});
ensureAuthenticated
中间件,以确保用户已经通过了Google认证:function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
通过以上步骤,你可以使用passport-google-oauth20获取用户的电子邮件信息。在回调函数中的profile.emails[0].value
即为用户的电子邮件地址。
关于腾讯云的相关产品和产品介绍,这里不做具体推荐,你可以访问腾讯云官网(https://cloud.tencent.com/)了解他们提供的云计算相关产品。
领取专属 10元无门槛券
手把手带您无忧上云