我最近按照其文档中的示例在我的一个应用程序中使用了password.js。虽然我可以使其工作,但我确实不了解工作流程。
下面,我将分享通过Facebook进行身份验证的代码,请引导我完成工作流程...
//serialize & deserialize
passport.serializeUser(function(user, done) {
console.log('serializeUser: ' + user._id);
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
// getting user with id
});
// Strategy configuration
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL
},
// verify callback according to the doc
function(accessToken, refreshToken, profile, done) {
// checking profile in db
}
});
}
));
//providing routes
app.get('/auth/facebook',
passport.authenticate('facebook'),
function(req, res){});
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/' }),
function(req, res) {
res.redirect('/account');
});
因此,据我所知,passport.authenticate调用了我们定义的策略,然后调用了验证回调。
但是我们在策略定义中也有一个callbackURL,我猜它会将用户重定向到'/ auth / facebook / callback'吗?但是什么时候发生?
为什么我们还要在路径中使用passport.authentication两次?
是因为我们被重定向到了另一个位置,因此第一次没有调用verify回调吗?
什么时候进行序列化和反序列化?
还如何调用Facebook登录对话框?