2016-12-16 10 views
0

私はアカウントキットを使用しており、firebaseに[email protected]を保存する必要があります。だから私は彼らの電子メールとパスワードの流れでやろうとしました。 しかし、私が見つけた問題は、2つの異なるフローがあることです.1つはユーザーを作成することです.1つはregister- createUserWithEmailAndPasswordの時に開始され、もう1つはログイン時にログイン時に開始される必要があります既に作成された-signInUserWithEmailAndPassword。ログインとサインアップに同じ流れ:Firebase Auth

同じ作成およびサインインコールのようなものがあります。これは初回ユーザーかどうかを判断できるため、作成するか、既存のユーザーを作成します。

私は私の目的のためにサーバーチェックをすることができますが、それは遅延と複数の別のシステムへの呼び出しをもたらします。あなたは次のことを行うことができ

+0

'createUserWithEmailAndPassword'を呼び出すと、そのユーザーが作成された場合はそのユーザーにサインインし、そのメールアドレスを持つユーザーが既に存在する場合は失敗します。 –

答えて

0

firebase.auth().fetchProvidersForEmail(email) 
    .then(function(providers) { 
     if (providers.length > 0) { 
     // The user has already been registered. Careful though: the 
     // following assumes that your users only sign up with email 
     // and password. If they can sign up with other providers 
     // (Google, Facebook...), you may not be able to do the next 
     // call. 
     return firebase.auth().signInWithEmailAndPassword(
      email, password); 
     } else { 
     // No account exists with this email address. 
     return firebase.auth().createUserWithEmailAndPassword(
      email, password); 
    }).then(function(user) { 
     // User is signed in! 
    }); 

これは最初のそのメールアドレスにリンクされているプロバイダをチェックします。リストに何も表示されておらず、ユーザーが電子メールとパスワードのみでサインアップできる場合(つまり、Googleログイン、Facebookログインなどがない場合)、ユーザーはすでに電子メールとパスワードでサインアップしていることが保証されます。この場合、ユーザーにサインインすることができます。リストが空の場合、ユーザーは存在せず、新しいユーザーを作成できます。

あなたの質問にお答えしますか?

関連する問題