2017-09-27 14 views
0

インターネット接続が切断されている間にFirebaseを使用して実装した認証コードをテストしています。createUserWithEmailAndPassword(email、password)を呼び出した直後にインターネット接続が失われる

これは私がメールアドレスとパスワードを使用してユーザーをサインアップしようとしたコードです:

if (isConnected()) { 
     FirebaseAuthentication.registerUser(email, password); 
} else { 
     Log.d(TAG, "Network ERROR"); 
} 

これはのregisterUserメソッドのコードです:

public static void registerUser(String email, String password) { 

    FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, 
    password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       // Sign in success. Do things 

      } else { 
       // If sign in fails 
       Log.d("AuthEngineDebugger", "Something went wrong"); 
      } 
     } 
    }); 

} 

時折、テストの間に私は自分自身を見つけますFirebaseAuth.getInstance()。createUserWithEmailAndPassword(..)が呼び出された直後に接続が失われる状況... Firebaseコンソールの認証リストにユーザが作成されているのですが、Logラインlogcatに表示されます(タスクは失敗します) 。現在のユーザーを取得しようとすると、nullが返されます。 ...接続が復元されたときに登録を再試行すると...電子メールアドレスがすでに存在することがわかりました...どうして回避するか

答えて

1

私は回避策を考えて喜んで働きました! ...

問題が発生するのは、接続が失われたときに、新しいユーザをFirebaseコンソールに追加する際に認証プロセスが邪魔になることですが、コード内で操作するための参照はありません。つまり、getCurrentUser()はnullを返します。

解決策:接続が復元され、再度ユーザーを再登録しようとする前に、登録に使用された資格情報を使用してユーザーにサインインしてください。今ではあなたの参照を戻って...今あなたは、ユーザーを削除し、全体の登録プロセス全体を再開するか、または接続が失われた場所から続けることができます。

関連する問題