我使用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。有时它可以工作,有时它不会。知道为什么吗?
答案 0 :(得分:0)
嗯,我无法通过使用弹出窗口来解决这个问题。但是,我能够通过在同一页面中打开oauth页面并重定向回到我之后想要用户的页面来解决这个问题。
此外,Google提供了一些库,可以在弹出窗口中为您打开它并处理结束。