提问者:小点点

从打开的窗口传递数据


我已经在这个问题上困了一天了,想知道有没有办法解决这个问题。

客户端

客户端将是动态的,因为它是一个应用程序类型的插件。客户端将为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的弹出窗口接收数据?

提前谢谢你!


共1个答案

匿名用户

您可以使用postMessage(查看此处)在窗口之间进行通信。在子窗口中,您可以将父窗口引用为window.opener来发布消息,而在父窗口中,您有popupwindow来发布消息