2

Firebaseの認証はログインしたままではなく、毎回アプリをリフレッシュまたは再オープンするため、再度サインインする必要があります。React Native - Firebase認証の永続性が機能しない

私はローカルに永続性を設定しようとしていると、コールバックは、そのセットを検証しませんが、持続性はまだ私が使用しています永続性を設定するための作業

ではありません...

//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) 
    }); 

。 。 。私は右の

+0

firebase用に使用しているライブラリを追加できますか? – bennygenel

+0

私は単純な "firebase"パッケージを使用しています.... "firebase": "^ 4.3.0"、 –

答えて

5

は致しておりませんがどちらかといえば、私に署名するための は、このコード

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) 
     // ... 
    }); 

そして、ここで私は、ログイン状態を確認するために使用していたコードがある...

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'); 
     } 

を使用しています永続性を設定する必要はありません。 Firebaseはデフォルトでそれを処理します。あなたは、ユーザーがログインしているかどうかをチェックしたりしないように、この関数を呼び出す必要があります。

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

ユーザーがサインアウトや掃除アプリのデータを持っている場合にのみトリガされません。

あなたは、公式ドキュメントと、より詳細な情報を確認することができます:https://firebase.google.com/docs/auth/web/manage-users

はそれがお役に立てば幸いです。

+0

代わりにこのメソッドを使用しています... firebase.auth()。currentUser; ...一度は動作しませんアプリがCmd + Rを使用してリフレッシュされるか、シミュレータ自体から再起動されます –

+0

私が提供したものにあなたのメソッドを置き換える必要があります。ドキュメントによって、アプリが閉じられた後にユーザーがログに記録されているかどうかをチェックする正しい方法です。働いたら教えてください。 – soutot

+1

ちょうどそれを試してみました、それは仕事をしなかったし、ドキュメントによると、ユーザーがすでに署名されているので、どちらかを期待していなかった.currentUser()はステータスがサインインまたはサインアウトされているかどうかを知る正しい方法です。 –

関連する問題