使用 expo go 保持 firebase 登录的最佳方法

2024-02-22

我正在尝试使用 React Native 制作一个应用程序Expo Go.已经成功让谷歌登录工作,一切都很好。不幸的是,用户的登录在应用程序重新启动之间不会保留。起初,我认为这是一个异步存储问题,但我可以在重新启动之间将项目保存在存储中。

我需要手动保存哪些数据才能在应用程序启动时让用户重新登录?

我更喜欢手动保存数据,因为所有方法都是supposed去工作,别为我工作。我尝试过的方法:

  • Calling setPersistence(getAuth(), browserLocalPersistence)给我一个错误,请参阅this https://stackoverflow.com/questions/71502662/react-native-firebase-undefined-is-not-an-object-evaluating-this-storage-setit发布我收到的确切错误。
  • Using onAuthStateChanged对我来说也不起作用,事实上,这是我知道何时登录的主要方式。用户对象始终为空,并且永远不会从空更改,直到用户再次登录(每次应用程序启动时都会发生这种情况)。
    useEffect(() => getAuth().onAuthStateChanged(value => {
      if (value) {
        console.log("User is signed in");
      }  else {
        console.log("User is signed out");
        // navigation.navigate("login")
      }
    }), [])
    

(此代码将始终在应用程序重新启动时打印用户已注销。)
此时,我认为如果我可以自己保存用户的凭据,然后在应用程序启动时以静默方式登录它们,那就更容易了。我很难找到执行此操作的代码。


好的,所以我意识到,为了保留登录状态,如果使用 expo,您实际上必须执行一个特殊的过程。您需要初始化自己的身份验证,传入异步存储,如下所示

import { initializeApp } from "firebase/app"
import { initializeAuth } from "firebase/auth"
import { getReactNativePersistence } from "firebase/auth/react-native"
import AsyncStorage from "@react-native-async-storage/async-storage"

const defaultApp = initializeApp(config);
initializeAuth(defaultApp, {
  persistence: getReactNativePersistence(AsyncStorage)
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 expo go 保持 firebase 登录的最佳方法 的相关文章

随机推荐