我正在尝试在我的React应用程序中使用Firebase身份验证。成功认证后,我需要在每次API调用中将accessToken传递给我的后端,以便后端可以验证有效的令牌。但我面临的问题是,当我在我的主页,并试图重新加载页面,我写了一个useEffect将调用我的user details
API。但在这里,当我尝试auth1.currentUser?.getIdToken(true)
时,它将返回null。或者,如果我像下面这样尝试,则甚至在获取用户详细信息之前就调用了API调用
useEffect(() =>{
const auth1 = getAuth();
const token = auth1.onAuthStateChanged(async (user: any) => {
console.log({user});
const idToken = await user?.getIdToken();
console.log('authToken', {idToken});
return localStorage.getItem('token');
});
//api call for userdetails
},[])
谁能给予一个例子来说明流程应该是怎样的?这种情况可能发生在我所有的页面重新加载
1条答案
按热度按时间vlurs2pr1#
我尝试重新加载页面,我写了一个useEffect,它会调用我的用户详细信息API。但是在这里,当我尝试
auth1.currentUser?.getIdToken(true)
时,它将作为null
出现。正如文档中所解释的,如果重新加载页面,Auth对象可能处于“中间状态,例如初始化”。
您应该在Auth对象上使用观察者(使用
onAuthStateChanged()
方法)来获取当前用户,如同一文档中所述。