Angularjs Passport Facebook-Can';I don’我不知道该怎么寄代币
更新:当前解决方案如下 我正在将facebook登录添加到我的网站中——我希望这很简单,但事实证明很难做到 (内置:Node.js/Express API和角度前端) 因此,对于我的问题,我恳请您提供以下帮助: 1-返回令牌而不是successRedirect 我正在使用Angularjs Passport Facebook-Can';I don’我不知道该怎么寄代币,angularjs,node.js,facebook,passport.js,passport-facebook,Angularjs,Node.js,Facebook,Passport.js,Passport Facebook,更新:当前解决方案如下 我正在将facebook登录添加到我的网站中——我希望这很简单,但事实证明很难做到 (内置:Node.js/Express API和角度前端) 因此,对于我的问题,我恳请您提供以下帮助: 1-返回令牌而不是successRedirect 我正在使用passport facebook来帮助登录过程,但是在回调中而不是在successRedirect中,我可以说返回一些包含令牌的json。请注意,该令牌是一个JWT令牌,我已经在标准电子邮件身份验证中使用过,我目前在passp
passport facebook
来帮助登录过程,但是在回调中而不是在successRedirect中,我可以说返回一些包含令牌的json。请注意,该令牌是一个JWT令牌,我已经在标准电子邮件身份验证中使用过,我目前在passport中创建了它。serializeUser
:
passport.serializeUser(function(user, done) {
var token = ///implementation for token
done(null, user);
});
然后在回调中执行如下操作:
router.get('/login/facebook/callback',
passport.authenticate('facebook', {
res.json({success: true, token:token)
})
);
2-如何在客户端处理
第二点我不能理解的是,如果我返回令牌,在我的客户端,我将用一种常见的$http.get
方法“拾取”它。但是URL流将如何工作?我的意思是,我有一个“使用facebook登录”按钮,然后调用服务器端的router.get('/login/facebook'
,它重定向到facebook登录页面,所以一旦完成并返回令牌,它将如何知道返回主页
希望我上面的问题有意义-我是新来的,所以请原谅我,如果不清楚,我会尽我所能解释
解决方案(如果我在做坏事,请告诉我你的想法) 因此,经过进一步思考,我用以下方法解决了这个问题: 1-在回调中,我创建了一个新的API get路由。然后在URL中发送用户ID以创建我的自定义JWT令牌:
router.get('/login/facebook/callback',
passport.authenticate('facebook',
{ session: false, failureRedirect: "/processfblogin/false" }),
function(req, res) {
res.redirect("/api/processfblogin/" + req.user._id);
}
);
然后从这里我制作令牌并发送URL
这就是它变得有趣的地方。我理想情况下想使用$http
get,但CORs一直给我302。因此,最终我将令牌作为URL参数附加,并将其发送为:
res.redirect('http://localhost:3000/#/fbToProcess/' + token);
然后,我用自己的控制器创建了这个页面,它只需获取令牌,保存令牌,并在我的页面上单击所有auth-wise命令即可
我将继续寻找在json响应中发送令牌的方法,这样用户就不需要进入这个新的空页面,但在这之前它可以工作:-)所以我有一个潜在的解决方案,我现在将更新我的问题-如果有人可以让我知道你对这种方法的想法。