【发布时间】:2021-08-01 02:49:33
【问题描述】:
我有 express 应用程序,在 8000 端口上运行,我也在 3000 端口上做出反应。 我正在尝试实施 google oauth。
这就是我所做的。
我尝试向我的 api 端点发送 get 请求, 然后我的快递服务器将用户重定向到谷歌登录。
然后,如何从get 请求将令牌从服务器发送到客户端?
这是我的快速代码。
我尝试直接从服务器发送 cookie,
但我不知道为什么 cookie 在端口 3000 上不可用,这是我的反应应用程序。
有什么巧妙的方法可以将 jwt 发送给客户端吗?
router.get(
"/google/callback",
passport.authenticate("google", {
scope: ["profile", "email"],
failureRedirect: "/login",
session: false,
}),
(req, res) => {
const payload = {
id: req.user.id,
};
jwt.sign(payload, secret, { expiresIn: tokenLife }, (err, token) => {
if(err) {
console.log('error', err)
}
const jwt = `Bearer ${token}`;
console.log('ini token', token)
const htmlWithEmbeddedJWT = `
<html>
<script>
// Save JWT to cookie
// document.cookie = 'token=${jwt};'
document.cookie = 'token=${jwt}; SameSite=None; Secure'
// Redirect browser to root of application
window.open('http://localhost:3000/login', '_self')
</script>
</html>
`;
res.send(htmlWithEmbeddedJWT);
});
}
);
【问题讨论】:
标签: javascript node.js express oauth