Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Passport Facebook-Can';I don’我不知道该怎么寄代币_Angularjs_Node.js_Facebook_Passport.js_Passport Facebook - Fatal编程技术网

Angularjs Passport Facebook-Can';I don’我不知道该怎么寄代币

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

更新:当前解决方案如下

我正在将facebook登录添加到我的网站中——我希望这很简单,但事实证明很难做到

(内置:Node.js/Express API和角度前端)

因此,对于我的问题,我恳请您提供以下帮助:

1-返回令牌而不是successRedirect

我正在使用
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响应中发送令牌的方法,这样用户就不需要进入这个新的空页面,但在这之前它可以工作:-)

所以我有一个潜在的解决方案,我现在将更新我的问题-如果有人可以让我知道你对这种方法的想法。