React Native - Firebase auth persistence not working

前端 未结 3 1875
你的背包
你的背包 2020-12-25 15:37

Firebase auth does not persist logged in user and everytime I refresh or reopen app I have to sign in again.

I have tried setting persistence to local and the callba

相关标签:
3条回答
  • 2020-12-25 16:02

    Make sure you do not restrict the 'Token Service API' in the console, with the API key you are using. I did not add the service to my key, and it logged me out every 3-4 hours, even with the right code suggested above.

    0 讨论(0)
  • 2020-12-25 16:07

    You don't need to set persistence. Firebase handles it for you by default. You just need to call this function to check whether user is logged or not:

    firebase.auth().onAuthStateChanged((user) => {
          if (user) {
            console.log('user is logged');
          }
    });
    

    This will not be triggered only if user has sign out or cleaned app data.

    You can find more details in the official docs: https://firebase.google.com/docs/auth/web/manage-users

    Hope it helps.

    0 讨论(0)
  • 2020-12-25 16:08

    Firebase now recommends to use firestore instead of realtime-database and it manages offline persistence by default. It is clear in its documentation here

    You just need to access the user through this code:

    if (auth().currentUser !== null) {
          console.log('User is logged in');
          console.log(auth().currentUser.email);
          props.navigation.navigate('Home');
        } else {
          props.navigation.navigate('Login');
    }
    

    This code will prop you to home screen if user is logged-in, even when you close the app. To clear the user's credentials, you manually need to sign-out the user using this code.

    try {
          auth()
            .signOut()
            .then(props.navigation.navigate('Login'));
        } catch (error) {
          Alert.alert('Error', error.toString());
    }
    

    You can also check this simple app (used react hooks in it) for further assistance.

    0 讨论(0)
提交回复
热议问题