我已经在这个问题上困了一天了,想知道有没有办法解决这个问题。
客户端
客户端将是动态的,因为它是一个应用程序类型的插件。客户端将为oAuth目的打开一个弹出窗口。假设它的域是www.google.com
,我在ReactJS中有一个类似window.open('www.backend.com/api')
的弹出窗口。
客户端按钮如下所示:
<button onClick={() => iveBeenClicked()}> sync up </button>
然后它运行这个函数
const iveBeenClicked = (e) => {
e.preventDefault()
const popupWindow = window.open('www.backend.com/api', "_blank")
}
使用ExpressJS的oAuth和后端
这是后端,我们说它是www.backend.com/api
router.use("/api", (req, res) => {
if (req.query.code) {
res.send(res.query.code)
} else {
res.redirect(
`www.ApiRouteThatRedirectsWhenComplete.com`
);
}
});
好吧,我有我想要的代码,但我如何从一个不同的域发送到客户端呢?如果有window.open()
的替代方案,用户可以按accept,请告诉我。
所以最大的问题是,客户端如何从Window.Open的弹出窗口接收数据?
提前谢谢你!
您可以使用postMessage(查看此处)在窗口之间进行通信。在子窗口中,您可以将父窗口引用为window.opener
来发布消息,而在父窗口中,您有popupwindow
来发布消息