我有一个Angular应用,它使用websocket连接与服务器交互。现在,我需要在第三方服务中实现OAuth,但是我无法处理通过window.open(url)
打开的新标签上的任何事件。
OAuth API将窗口重定向到我的域,并在URL查询参数中返回令牌。我需要捕获此令牌才能使用它。如何实现?
const eHealthWind = window.open(msg.data.url);
console.log(eHealthWind.window);
eHealthWind.onload = function () {
eHealthWind.onpopstate = function (e) {
console.log('pop', e);
};
};
答案 0 :(得分:1)
这可能是一种方法:
const loggedInPromise = new Promise((res) => {
const eHealthWind = window.open(msg.data.url);
const intervalId = setInterval(function() {
try {
res(eHealthWind.location.href);
clearInterval(intervalId);
eHealthWind.close();
} catch (error) {
}
}, 1000);
})
loggedInPromise.then((urlWithToken) => { console.log(urlWithToken); })