护照认证失败导致重定向循环

Nao*_*aor 9 javascript facebook node.js express passport.js

我正在使用facebook认证的节点,快递和护照.
我有以下路由(何时/facebook/auth/callback是回调网址):

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' }));
Run Code Online (Sandbox Code Playgroud)

验证成功后,我得到了auth-success我预期的页面视图.但是当身份验证失败并且facebook返回到: http:// localhost:3000/facebook/auth/callback?error_code = 2102&error_message = User + is + not + a + test + user + owned + by + the + application#=

我不明白auth-failure!相反,firefox返回页面:

在此输入图像描述

在chrome中运行时,我收到消息: 在此输入图像描述

我尝试检查一下,然后将故障路由器替换为:

app.get('/facebook/auth/callback', function (req, res) {
    res.redirect('/auth-failure');
});
Run Code Online (Sandbox Code Playgroud)

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);
    });
});
Run Code Online (Sandbox Code Playgroud)

Fou*_*_lo 1

我相信这是因为您正在使用自定义回调并且需要提供一个 res 对象,例如......

 app.get('/facebook/auth/callback', function(req, res, next) { 
         passport.authenticate('facebook',..............
Run Code Online (Sandbox Code Playgroud)