关闭Google OAuth2的弹出窗口

时间:2016-03-10 21:25:00

标签: javascript popup popupwindow window.open oauth2

我使用newWindow = window.open(...)在弹出窗口中打开我的oauth2 for Gmail,然后当用户完成填写并点击“允许”#39;它重定向到我的服务器,在那里检索和存储令牌。最后,服务器返回错误'或者'成功'所以弹出窗口就会有它。现在在Angular方面,我已经开始运行了。

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。有时它可以工作,有时它不会。知道为什么吗?

1 个答案:

答案 0 :(得分:0)

嗯,我无法通过使用弹出窗口来解决这个问题。但是,我能够通过在同一页面中打开oauth页面并重定向回到我之后想要用户的页面来解决这个问题。

此外,Google提供了一些库,可以在弹出窗口中为您打开它并处理结束。