从弹窗子页面取回数据

问题描述 投票:0回答:1

我使用以下代码在新窗口中打开登录页面:

const newWindow = window.open (url, ...)

用户授权我的应用程序后,他们用于登录的第三方应用程序会将他们重定向回我的页面之一,其中 URL 中包含特定参数。 在回调(弹出窗口)中,我提取了这些参数。

现在,如何在主页上检索这些参数?

我尝试用 Redux 来做到这一点。在登录页面上,我使用从回调收到的参数更新了项目的状态。我检查过,它有效,但是当我关闭登录页面窗口时,主页的存储意味着丢失更改。

reactjs react-redux
1个回答
0
投票

通过使用本地存储解决。谢谢@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]);
© www.soinside.com 2019 - 2024. All rights reserved.