我正在使用带有 Facebook 身份验证的 Node、Express 和 Passport。
我有以下路线(当/facebook/auth/callback
是回调url):
function render(page, req, res) {
var user = null;
if (req.user) {
user = req.user.toObject();
user.isLoggedIn = true;
}
res.render(page, { user: user });
}
app.get('/auth-failure', function (req, res) {
res.render('auth-failure');
});
app.get('/auth-success', function (req, res) {
render('auth-success', req, res);
});
app.get('/facebook/auth', passport.authenticate('facebook', { scope: [ 'email', 'user_about_me', 'publish_actions']}));
app.get('/facebook/auth/callback', passport.authenticate('facebook', { failureRedirect: '/auth-failure', successRedirect: '/auth-success' }));
身份验证成功后我得到了页面auth-success
视图如我所料。但是当身份验证失败并且facebook返回时:
我不明白auth-failure
看法!相反,Firefox 返回页面:
When running in chrome, I get the message:
我尝试检查并将故障路由器替换为:
app.get('/facebook/auth/callback', function (req, res) {
res.redirect('/auth-failure');
});
这使得auth-failure
查看成功。
Passport.js facebook 验证失败是什么问题?
为什么它返回给我那个错误页面?
关于@Matt Bakaitis 评论:
这是我的序列化和反序列化函数:
// serialize sessions
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findOne({ _id: id }, function (err, user) {
done(err, user);
});
});