我正在整合护照和环回,并且工作正常,问题是如何获取访问令牌。
我有一个网络应用程序(服务于不同于环回的服务器)所以:
我可以重定向(如果登录成功)到我的网络应用程序,但我在进程中丢失了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")
如果你为后端和前端使用不同的URL,你就不能 所以我建议使用这篇文章的解决方案
答案 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中访问了 希望这有助于澄清。