如何在环回

时间:2016-11-10 23:13:09

标签: passport.js loopbackjs loopback passport-facebook

我正在整合护照和环回,并且工作正常,问题是如何获取访问令牌。

我有一个网络应用程序(服务于不同于环回的服务器)所以:

  1. 发出请求(在环回后端)
  2. 这会将我重定向到Facebook,批准
  3. 返回环回(护照工作)
  4. 现在,如何在我的网络应用程序中生成accessToken?
  5. 我可以重定向(如果登录成功)到我的网络应用程序,但我在进程中丢失了accessToken。

    有什么想法吗?

    我提出请求

    解:

    访问令牌由cookie中的环回来设置,因此当重定向回到Web应用程序时,可以通过以下方式访问:

     document.cookie
    

    如果你想通过一个变量:

    var access_token = document.cookie.replace(/(?:(?:^|.*;\s*)access_token\s*\=\s*([^;]*).*$)|^.*$/, "$1")
    var userId = document.cookie.replace(/(?:(?:^|.*;\s*)userId\s*\=\s*([^;]*).*$)|^.*$/, "$1")
    

    BUT

    如果你为后端和前端使用不同的URL,你就不能 所以我建议使用这篇文章的解决方案

1 个答案:

答案 0 :(得分:2)

我希望,我明白了。以下是我遵循护照/脸谱策略的流程。
1)客户端(网络应用):window.location = http://urlServerName:port/passport/facebook 这也可以是服务器端的重定向 2)用户在facebook上输入凭据 3)Facebook重定向回调。

router.get('/passport/facebook', passport.authenticate('facebook'));
router.get('/passport/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }),
   (req, res) => {

      let url = req.url; // url contains the code
      let urs = req.usr; // user info.
      // You can set a cookie with the info you want. This can be the auth code, the user profile or a JWT generated in the same request.
      res.cookie("data",usr,{httpOnly:true});            
      res.redirect('urlWebApplication');          
});

4)在你的回调中,你可以设置一个包含你想要的信息的cookie。这样就可以在你的webapp中访问了 希望这有助于澄清。