Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关闭Google OAuth2的弹出窗口_Javascript_Popup_Popupwindow_Window.open_Oauth2 - Fatal编程技术网

Javascript 关闭Google OAuth2的弹出窗口

Javascript 关闭Google OAuth2的弹出窗口,javascript,popup,popupwindow,window.open,oauth2,Javascript,Popup,Popupwindow,Window.open,Oauth2,我使用newWindow=window.open(…)在弹出窗口中打开我的oauth2 for Gmail,然后当用户填写完并点击“允许”时,它会重定向到我的服务器,在那里检索和存储令牌。最后,服务器返回'Error'或'Success',因此弹出窗口中只包含该信息。现在在角度方面,我有这个运行 checkConnect = setInterval(function() { try{ if(newWindow.document.body.innerText === 'Succ

我使用
newWindow=window.open(…)
在弹出窗口中打开我的oauth2 for Gmail,然后当用户填写完并点击“允许”时,它会重定向到我的服务器,在那里检索和存储令牌。最后,服务器返回'Error'或'Success',因此弹出窗口中只包含该信息。现在在角度方面,我有这个运行

checkConnect = setInterval(function() {
    try{
      if(newWindow.document.body.innerText === 'Success') {
        console.log('Success');
        newWindow.close();
        window.clearInterval(checkConnect);
      }else if(newWindow.document.body.innerText === 'Error') {
        console.log('We had an error!');
        newWindow.close();
        window.clearInterval(checkConnect);
      }else if(newWindow.closed) {
        console.log('WINDOW WAS closed');
        window.clearInterval(checkConnect);
      }
    }catch(e) {
      //console.log(e);
    }
}, 100);

这有时有效,有时失败。我还将此代码用于其他Oauth提供程序,例如Dropbox。知道为什么吗?

嗯,我无法通过弹出窗口来找出原因。但是,我可以通过在同一个页面中打开oauth页面,然后重定向回我希望用户访问的页面来解决这个问题

此外,谷歌还提供了一些库,可以在弹出窗口中为您打开并处理关闭操作