PassportJS谷歌登录错误,但成功

时间:2017-04-05 05:53:39

标签: javascript passport.js

当我使用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)

1 个答案:

答案 0 :(得分:0)

在这一行:cb(profile)我向回调而不是用户个人资料发送错误。

应该是:cb(null, profile)