子 window 事件未启动

Child window events not firing up

我正在尝试获取访问令牌以授权某些 api 对 GOG api 的调用。

问题是在文档中,它指出我需要打开一个 window 指向 auth.gog.com/auth 并带有一些参数,并且在正确登录后重定向将完成 https://embed.gog.com/on_login_success .

所以当我的 React 应用程序启动时,我打开一个新的 window 然后注册到 onload 事件(只是测试)并且永远不会调用 onload 事件。

function App() {
  return (
    <div className="App">
      <button onClick={_clickHandler}>CLICK HERE</button>
    </div>
  );

  function _clickHandler()
  {
    let slaveWindow:(Window  | null) = window.open("https://auth.gog.com/auth?client_id=46899977096215655&layout=client2&redirect_uri=https://embed.gog.com/on_login_success?origin=client&response_type=code");
    if(slaveWindow!=null)
    {
      /*
      console.log("--------> "+slaveWindow);
      
      slaveWindow?.addEventListener("load", (ev:Event) => {
        console.log("Loaded!");
        return null;
      });
      */
     slaveWindow.onload = ()=>{alert("Child window has been loaded!")};
    }
}

除非您的来源与 https://auth.gog.com/ 相同,否则您将无法访问 slaveWindow 对象上的 onload 事件或任何 window 属性和方法。

这是因为浏览器对使用 window.open 打开的 windows 执行同源策略。

https://developer.mozilla.org/en-US/docs/Web/API/Window/open