2

Firebase auth ne persiste pas connecté utilisateur et à chaque fois que j'actualise ou rouvre l'application, je dois me reconnecter.React Native - La persistance d'authentification Firebase ne fonctionne pas

J'ai essayé de placer la persistance au niveau local et la fonction de rappel ne vérifie son jeu, mais la persistance est toujours pas de travail

Pour régler la persistance J'utilise ...

//set auth persistence 
    firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL) 
    .then(function() { 
     console.log("successfully set the persistence"); 

    }) 
    .catch(function(error){ 
    console.log("failed to ser persistence: " + error.message) 
    }); 

. . . Pour connectez-je utilise ce code

firebase.auth().signInWithEmailAndPassword(email, password) 
     .then((user) =>{ 
     this.checkAccountStatus(user.uid, user.email); 
     }) 
     .catch(function(error) { 
     // Handle Errors here. 

     var errorCode = error.code; 
     var errorMessage = error.message; 

     console.log(errorMessage) 
     // ... 
    }); 

Et voici le code que je utilise pour vérifier l'état de connexion ...

if (firebase.auth().currentUser) { 
     const currentUser = firebase.auth().currentUser; 
     console.log("Signed in username" + currentUser.displayName); 

     this.props.navigation.navigate('AppTab'); 
     }else{ 
     console.log("no user signed in"); 
     this.props.navigation.navigate('AuthTab'); 
     } 

si quelque chose que je ne suis pas en train de faire

+0

pouvez-vous ajouter quelle bibliothèque utilisez-vous pour firebase s'il vous plaît? – bennygenel

+0

J'utilise un simple paquet "firebase" .... "firebase": "^ 4.3.0", –

Répondre

5

Vous n'avez pas besoin de définir la persistance. Firebase le gère pour vous par défaut. Vous avez juste besoin d'appeler cette fonction pour vérifier si l'utilisateur est connecté ou non:

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

Ce ne sera pas déclenché que si l'utilisateur a déconnectez-vous ou des données d'application nettoyées.

Vous pouvez trouver plus de détails dans les documents officiels: https://firebase.google.com/docs/auth/web/manage-users

Hope it helps.

+0

J'utilise cette méthode à la place ... firebase.auth(). CurrentUser; ... il ne fonctionne pas une fois le application rafraîchie à l'aide de Cmd + R ou redémarrée à partir du simulateur lui-même –

+0

Vous devez remplacer votre méthode par celle que j'ai fournie. Par les docs, c'est la façon correcte de vérifier si un utilisateur est connecté ou non après la fermeture de l'application. Faites-moi savoir si cela a fonctionné. – soutot

+1

vient de l'essayer, il ne fonctionne pas et je ne m'y attendais pas non plus, car selon docs, si l'utilisateur est déjà signé est .currentUser() est la bonne façon de savoir si le statut est signé ou à l'extérieur .... rubrique "Obtenir l'utilisateur actuellement connecté" à l'adresse https://firebase.google.com/docs/auth/web/manage-users –