Я недавно использовал passport.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 вызывает стратегию, которую мы определили, а затем проверяетcallback называется.
Но у нас также есть callbackURL в определении стратегии, который, я думаю, перенаправляет пользователя на «/ auth / facebook / callback»?Но когда это происходит?
Кроме того, почему мы дважды используем passport.authenticate в маршрутах?
Это потому, что мы перенаправлены в другое место и, следовательно, обратный вызов проверки не вызывается в первый раз?
А когда происходит сериализация и десериализация?
Также как вызывается диалог входа в Facebook?