如何将Firebase电子邮件身份验证与React Native和React导航一起使用

时间:2020-04-10 06:12:18

标签: reactjs react-native react-redux firebase-authentication react-navigation

我正在尝试在我的React本机应用中实现Firebase身份验证,并试图在React导航的身份验证流程中使用受保护的路由。但是,即使我具有所有可用的功能(登录,注销等),我也不知道如何在应用程序中保存状态(使用redux)并使用它来更改导航中的路线。如果有人可以帮忙,将不胜感激。

从文档中我发现我必须对人员状态使用侦听器:

 function checkSignIn(){
  Firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
      return true
    } else {
      return false
    }
  })
}

但是我不确定之后该怎么办

2 个答案:

答案 0 :(得分:0)

您说对了,在函数之后,如果user不为null,则可以将其重定向到主屏幕,如果为null,则将其重定向到登录页面:

 function checkSignIn(){
     Firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
           navigation.navigate("Home")
        } else {
           navigation.navigate("Login")
       }
  })
}

答案 1 :(得分:0)

建议的方法的唯一问题是,当您重新加载页面时,您仍然不知道用户的状态,因此很难确定要重定向到的位置,或者在状态为由firebase“解决”。

我所做的是在应用程序的顶层(我已订阅onAuthStateChanged的地方)中包含了一个状态,该状态指定是否从firebase检索身份验证状态。在此之前,我只渲染一个加载动画,一旦有了状态(是用户还是null),就可以决定重定向的位置。