在node.js Express中使用Passport模块,我在访问者通过Facebook登录后成功获得了重定向。以下是我的代码的一部分:
app.use(passport.initialize());
app.use(passport.session());
passport.use(new FacebookStrategy({
clientID: '999999999999999',
clientSecret: 'ffffffffffffffffffffffffffffffff',
callbackURL: 'https://xxxxxxxxx.com/auth/facebook/callback'
}, function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
done(null, profile);
});
}));
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get('/auth/facebook/callback', passport.authenticate('facebook', {
successRedirect: '/register?provider=facebook',
failureRedirect: '/',
failureFlash: true
}));
passport.serializeUser(function(user, done) {done(null, user);});
passport.deserializeUser(function(obj, done) {done(null, obj);});
我的问题是:我们如何记住会话?似乎没有办法从.nextTick()函数中传递值,也不能注册cookie ...
答案 0 :(得分:0)
我刚刚意识到我必须在初始化护照之前初始化cookieParser()和cookieSession()。
app.use(cookieParser());
app.use(cookieSession({
secret: config.sessionSecret,
cookie: {
maxAge: config.sessionMaxAge
}
}));
app.use(passport.initialize());
app.use(passport.session());
......
之后,我们可以在successRedirect回调中访问req.user中的信息。