使用 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” ",似乎工作正常。