2016-07-20 18 views
0

パスワードベースのアカウントを作成します。ここでFirebase SDK(ウェブ)私は、ユーザーログインのためFirebase SDK(ウェブ)を使用

Authenticate with Firebase using Password-Based Accounts

は、私が作成したユーザーのために、このコードを使用したリンクにありますアカウントと私はユーザーを作成するために成功することができます。

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}); 

しかし、私の質問は成功を創り出すかどうかを決めることです。

エラーが発生した場合はエラーをキャッチできますが、成功した場合はどうすればわかりますか?

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}.catch(success){ 
    // Handle Success here 
    // I want to catch success like this 
}); 

答えて

1

createUserWithEmailAndPassword()は、約束を返す。約束は成功して失敗することができ、それぞれに別々の条項があります。あなたはthen()句で成功を扱うことができます。

上記のためのいくつかの重要な流れを逃すので
firebase.auth().createUserWithEmailAndPassword(email, password).then(success){ 
    // Handle Success here 
}).catch(function(error) { 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}; 

あなたがマニュアルにthen()が表示されない理由は、あるときにユーザーがサインイン例えば

。 :ページ/アプリをリロードするとどうなりますか? Firebaseは自動的にユーザのセッションをローカルストレージに保存しますが、コードはそれを認識しません。だからあなたのアプリでは、ユーザーが再びサインインする必要があり、これはあまり良い経験につながりません。

Firebase認証で、それはmonitor the authentication stateに優れている:ユーザーが署名またはアウトされるたびに

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 

このコールバックは、自動的に呼び出されません。したがって、アカウントを作成したかどうかに関わらず、ページを再読み込みするか、一時的なトークンを更新して、最初のブロックのコードが実行されます。同様に、ユーザーのセッションが期限切れになったのか、サインアウトしたのか、その他の理由でサインアウトしたのか、2番目のブロックのコードが実行されます。

この方法では、ユーザーがサインインまたはサインアウトしたケースを処理するための場所が1つしかありません。

しかし、createUserWithEmailAndPassword()はすべての種類の壮大な方法で失敗する可能性があるので、明示的にそれらのエラーを処理したいと思うでしょう。

のでcreateUserWithEmailAndPassword()を処理し、サインイン状態を監視するための完全な慣用的なコードは次のとおりです。

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}; 
firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 
+0

おかげであなたの助け –

+0

こんにちは私は(その後、追加しよう)が、それは動作していないように見えます –

関連する問題