我正在尝试使用Expo Go 在 React Native 中制作一个应用程序。已经成功让谷歌登录工作,一切都很好。不幸的是,用户的登录在应用程序重新启动之间不会保留。起初,我认为这是一个异步存储问题,但我可以在重新启动之间将项目保存在存储中。
我需要手动保存哪些数据才能在应用程序启动时让用户重新登录?
我更喜欢手动保存数据,因为所有应该有效的方法都不适合我。我尝试过的方法:
setPersistence(getAuth(), browserLocalPersistence)
给我一个错误,请参阅这篇文章以了解我收到的确切错误。onAuthStateChanged
对我来说也不起作用,事实上,这是我知道何时登录的主要方式。用户对象始终为空,并且永远不会从空更改,直到用户再次登录(每次应用程序启动时都会发生这种情况) 。
useEffect(() => getAuth().onAuthStateChanged(value => {
if (value) {
console.log("User is signed in");
} else {
console.log("User is signed out");
// navigation.navigate("login")
}
}), [])
Run Code Online (Sandbox Code Playgroud)
(此代码将始终在应用程序重新启动时打印用户已注销。)
此时,我认为如果我可以自己保存用户的凭据,然后在应用程序启动时以静默方式登录它们,那就会更容易。我很难找到执行此操作的代码。
javascript firebase react-native firebase-authentication expo