我在弹出窗口中打开了用于 Gmail 的 oauth2,newWindow = window.open(...)
然后当用户完成填写并点击“允许”时,它会重定向到我的服务器,在那里检索和存储令牌。最后,服务器返回“错误”或“成功”,因此弹出窗口中只会包含它。现在在 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。有时它可以工作,有时它不能。知道为什么吗?