如何在环回中获取使用护照生成的访问令牌

How to get accessToken generated whit passport in loopback

我正在将 passport 与 loopback 集成,并且工作正常,问题是如何获取访问令牌。

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

  1. 发出请求(在环回后端)
  2. 这会将我重定向到 Facebook,批准它
  3. Return 环回(做通行证工作)
  4. 现在,我如何获得在我的网络应用程序中生成的 accessToken?

我可以重定向(如果登录成功)到我的网络应用程序,但我在进行中丢失了 accessToken。

有什么想法吗?

我提出请求

解决方案:

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

 document.cookie

如果你想传递一个变量:

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

但是

如果后端和前端使用不同的 URL,则不能 所以我建议使用这个 post

的解决方案

我希望,我明白了。这是我遵循 passport/facebook 策略的流程。
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。这样就可以在您的网络应用程序中访问它。
希望这有助于澄清。