当我使用PassportJS和passport-google-oauth20
登录Google时,我的应用程序成功完成了请求,但Passport无法识别此情况并改为调用错误。
我的代码如下所示:
router.get('/auth/google/callback',
passport.authenticate('google', {failureRedirect: '/login'}),
(req, res) => console.log(req),
(err, req, res, next) => {
console.log('test point 1')
console.log(err.stack)
return res.status(500).send(err)
})
输出如下所示,表示请求确实失败我相信:
test point 1
undefined
但是当我查看浏览器时,它返回了一个包含正确的Google用户信息的500代码,例如个人资料图片和ID。 Passport不会将其存储在req.user
变量中。谢谢!
如果它有用,我的护照初始化非常简单明了:
// TODO: eventually setup user account system
passport.serializeUser((user, done) => done(null, user))
passport.deserializeUser((obj, done) => done(null, obj))
// TODO: eventually use this to associate the users account
passport.use(new GoogleStrategy({
callbackURL: 'http://localhost:8080/api/v0/auth/google/callback',
clientID: 'number-id.apps.googleusercontent.com',
clientSecret: 'secrets'
}, (accessToken, refreshToken, profile, cb) => {
cb(profile)
}))
我能想到的唯一不同的是,我的情况是,我只是use
在特定路线上的护照。 (例如API)
答案 0 :(得分:0)
在这一行:cb(profile)
我向回调而不是用户个人资料发送错误。
应该是:cb(null, profile)
。