通过node.js Express Passport

时间:2015-09-06 09:36:14

标签: node.js facebook express passport.js passport-facebook

在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 ...

1 个答案:

答案 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中的信息。