我一直在使用服务器上的Passport进行用户身份验证.
现在我也想支持Facebook and Google login人.自从我开始使用Passport以来,我认为最好继续使用Passport策略,使用passport-facebook和passport-google-oauth.
我会提到Facebook,但这两种策略的行为是相同的.它们都需要重定向到服务器路由('/auth/facebook'和'/auth/facebook/callback').
在服务器上创建用户时,将创建JWT(不依赖从facebook\google收到的令牌).
... // Passport facebook startegy
var newUser = new User();
newUser.facebook = {};
newUser.facebook.id = profile.id;
newUser.facebook.token = token; // token received from facebook
newUser.facebook.name = profile.displayName;
newUser.save(function(err) {
if (err)
throw err;
// if successful, return the new user
newUser.jwtoken = newUser.generateJwt(); // JWT CREATION!
return done(null, newUser);
});
问题是,在它创建之后,I don't find a proper way to send the JWT to the client,因为我也应该重定向到我的应用程序.
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
session: false,
successRedirect : '/',
failureRedirect : '/'
}), (req, res) => {
var token = req.user.jwtoken;
res.json({token: token});
});
代码高于redirects me to my app main page, but I don't get the token.
有什么解决办法吗?我的方法错了吗?任何建议都行.