Google oauth20 的 Passport,未使用中间件,passport.initialize()
Posted
技术标签:
【中文标题】Google oauth20 的 Passport,未使用中间件,passport.initialize()【英文标题】:Passport for Google oauth20, middleware not in use, passport.initialize() 【发布时间】:2018-07-04 15:16:54 【问题描述】:我正在使用 passport-google-oauth20、mongoose、mlab 进行用户身份验证。 一旦我从 google auth 收到回调,我会在 done mehhod 中收到以下错误:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:3):错误:passport.initialize() 中间件未使用
我附上了我的代码库的屏幕截图。 提前致谢!
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const mongoose = require('mongoose');
const Keys = require('../config/dev');
const User = mongoose.model('users');
passport.serializeUser((user, done) =>
done(null, user.id);
);
passport.deserializeUser((id, done) =>
User.findById(id).then(user =>
done(null, user);
);
);
passport.use(new GoogleStrategy(
clientID: Keys.GOOGLE_CLIENT_ID,
clientSecret: Keys.GOOGLE_CLIENT_SECRETKEY,
callbackURL: "/auth/google/callback"
,(accessToken, refreshToken, profile, done) =>
User.findOne(googleID: profile.id).then((existingUser) =>
if(existingUser)
console.log('existing');
//This above log is printing fine and then here I am getting error
done(null, existingUser);
else
console.log('new');
new User(googleID: profile.id).save()
.then((user) => done(null, user);)
)
));
【问题讨论】:
【参考方案1】:请查看passport-google-oauth2 您的错误看起来像是您错过了初始化护照:
app.use( passport.initialize());
app.use( passport.session());
【讨论】:
以上是关于Google oauth20 的 Passport,未使用中间件,passport.initialize()的主要内容,如果未能解决你的问题,请参考以下文章
使用 google-passport-oauth 登录后 req.user 未定义
javascript DEFAULT passport-google-oauth
Passport.js 在 nginx 上表达 google oauth 502 Bad Gateway