【问题标题】:How to use firebase email auth with react native and react navigation如何使用带有反应原生和反应导航的firebase电子邮件身份验证
【发布时间】:2020-07-22 21:15:36
【问题描述】:

我正在尝试在我的 react 本机应用程序中实现 firebase 身份验证,并尝试在 react 导航的身份验证流程中使用受保护的路由。但是,即使我的所有功能都正常工作(登录、退出等),我也不知道如何在我的应用程序中保存状态(使用 redux)并使用它来更改导航中的路线。如果有人可以提供帮助,将不胜感激。

从我发现的文档中,我必须为个人状态使用侦听器:

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

但我不知道之后该怎么办

【问题讨论】:

  • 顺便说一句,您的示例不正确。 onAuthStateChanged 是一个订阅函数,需要回调。你不能只返回真/假。一种解决方法是返回一个 Promise 并在回调被触发后解决它。

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


【解决方案1】:

你说得对,如果用户不为空,你可以将他们重定向到主屏幕,如果为空,将他们重定向到登录页面:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 2019-02-23
      • 2016-11-28
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多