使用 Stack Navigator 的 Firebase 持久身份验证
Firebase Persisting Auth with Stack Navigator
通过执行以下操作,尝试让 Firebase 在 React Native 的 app.js 中持续进行身份验证:
有一个通过 Firebase 调用 auth() 登录的登录页面,它工作正常,并通过 navigation.replace("Home") 重定向到主页;但是,一旦应用程序关闭并在模拟器上重新启动,它就会重定向回登录。
这似乎是 App.js 的样子,我假设 AuthStateChanged 将如下图所示普遍存在,但是,在 App.js 中无法访问用户,因为它是在 [=25] 中建立的=],当发送 Firebase 凭据时,但我认为它类似于此布局?
const App = () => {
var initialRoute = null
React.useEffect(() => {
const unsubscribe = auth().onAuthStateChanged(user => {
if(user) {
initialRoute = "Home"
}
else {
initialRoute = "SignIn"
}
})
return unsubscribe
}, []);
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false,
}}
initialRouteName={initialRoute}
>
之所以需要影响初始路由,而不只是将任何重新打开的人重定向到主页,是因为注册后,还包括调整数据库的额外步骤,例如位置映射等,因此,重定向必须发生在初始路由内。
感谢您的帮助。
这不是您使用 react-navigation 构建导航流程的方式。但这没问题,因为官方 react-navigation 方面有关于如何做到这一点的指南:https://reactnavigation.org/docs/auth-flow/
通过在 App.js 中设置两个不同的 returns 来修复,一个用于如果用户通过 Firebase 进行身份验证,将 initialRoute 设置为“Home”,另一个用于将其设置为“SignUp” ",似乎工作正常。
通过执行以下操作,尝试让 Firebase 在 React Native 的 app.js 中持续进行身份验证:
有一个通过 Firebase 调用 auth() 登录的登录页面,它工作正常,并通过 navigation.replace("Home") 重定向到主页;但是,一旦应用程序关闭并在模拟器上重新启动,它就会重定向回登录。
这似乎是 App.js 的样子,我假设 AuthStateChanged 将如下图所示普遍存在,但是,在 App.js 中无法访问用户,因为它是在 [=25] 中建立的=],当发送 Firebase 凭据时,但我认为它类似于此布局?
const App = () => {
var initialRoute = null
React.useEffect(() => {
const unsubscribe = auth().onAuthStateChanged(user => {
if(user) {
initialRoute = "Home"
}
else {
initialRoute = "SignIn"
}
})
return unsubscribe
}, []);
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false,
}}
initialRouteName={initialRoute}
>
之所以需要影响初始路由,而不只是将任何重新打开的人重定向到主页,是因为注册后,还包括调整数据库的额外步骤,例如位置映射等,因此,重定向必须发生在初始路由内。
感谢您的帮助。
这不是您使用 react-navigation 构建导航流程的方式。但这没问题,因为官方 react-navigation 方面有关于如何做到这一点的指南:https://reactnavigation.org/docs/auth-flow/
通过在 App.js 中设置两个不同的 returns 来修复,一个用于如果用户通过 Firebase 进行身份验证,将 initialRoute 设置为“Home”,另一个用于将其设置为“SignUp” ",似乎工作正常。