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)
我相信这是因为您正在使用自定义回调并且需要提供一个 res 对象,例如......
app.get('/facebook/auth/callback', function(req, res, next) {
passport.authenticate('facebook',..............
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3041 次 |
最近记录: |