我使用以下代码在新窗口中打开登录页面:
const newWindow = window.open (url, ...)
用户授权我的应用程序后,他们用于登录的第三方应用程序会将他们重定向回我的页面之一,其中 URL 中包含特定参数。 在回调(弹出窗口)中,我提取了这些参数。
现在,如何在主页上检索这些参数?
我尝试用 Redux 来做到这一点。在登录页面上,我使用从回调收到的参数更新了项目的状态。我检查过,它有效,但是当我关闭登录页面窗口时,主页的存储意味着丢失更改。
通过使用本地存储解决。谢谢@catzilla
在回调页面上,我在字符串化后存储了API响应(包括访问令牌、刷新令牌、过期日期等):
localStorage.setItem(key, JSON.stringify(value))
关闭回调窗口后,我在主窗口中实现了一个检查,以检测子(回调)窗口何时关闭:
const checkWindowClosed = (childWindow, setWindowIsOpen) => {
const interval = setInterval(() => {
if (childWindow.closed) {
clearInterval(interval);
setWindowIsOpen(false) // useState
}
}, 500); //every 500ms
}
然后,我使用相同的密钥从本地存储中检索并解析数据:
useEffect(() => {
if (!windowIsOpen) {
const value = JSON.parse(localStorage.getItem(key))
//
}
}, [windowIsOpen]);