使用Node,Express和Passport.
好的,我和我的团队正在为双面市场类型的应用程序构建REST API.我们已经为电子邮件和密码登录设置了基本的LocalStrategy.
我们希望API用户代理不可知,因此我们可以通过Web,Android或iOS使用API.
但是我们感到困惑的是FB登录流程.问题是,在Passportjs的幕后究竟发生了什么.我们已经研究了'passport-facebook'和'passport-facebook-token'策略,并且无法真正决定使用哪种策略.
这是我目前对流程的理解:


如果这是正确的,我最好让客户端从FB获取access_token然后发送给我,或者让FB通过重定向和回调URL处理它?
护照令牌:
passport.use('facebook-token', new FacebookTokenStrategy( {
clientID: 'xxx',
clientSecret: 'xxx'
}, function(accessToken, refreshToken, profile, done) {
// asynchronous
//console.log("into passport auth");
process.nextTick(function() {
User.findOne({'facebook.id': profile.id}, function(error, user) {
console.log("user is " + JSON.stringify(user));
console.log("profile is " + JSON.stringify(profile));
//do user creation stuff etc.
return done(error, user);
});
});
}));
authRouter.post('/facebook', passport.authenticate('facebook-token'), function (req, res) {
console.log("into controller");
if (req.user){
//log the user in since they successfully authenticated with facebook.
req.login(user);
res.status(200).end();
} else { …Run Code Online (Sandbox Code Playgroud)