2017-05-17 18 views
1

「複数のアカウントを1メールアドレスにする」を有効にしようとしていますが、どのように動作するかはわかりません。 fetchProvidersForEmail()は予期しない結果を返すようです。Firebase認証Android fetchProvidersForEmail()のバグ?

私は以下のコードを持っています。デフォルトでは

firebaseAuth.fetchProvidersForEmail("email").addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>() { 
    @Override 
    public void onComplete(@NonNull Task<ProviderQueryResult> task) { 
     if (task.isSuccessful()) { 
      List<String> providers = task.getResult().getProviders(); 
      if (providers != null) { 
       Timber.d(providers.toString()); 
      } else { 
       Timber.d("provider null"); 
      } 
     } else { 
      Timber.d("task fail"); 
     } 
    } 
}); 

シナリオ1

  1. 、Googleとユーザーにサインインします。 fetchProvidersForEmail()[google.com]を返します。
  2. [複数のアカウントをメールアドレスごとに有効にする]を有効にします。 fetchProvidersForEmail()[]を返します。
  3. 「複数のアカウントをメールアドレスごとに無効にする」を無効にします。 fetchProvidersForEmail()[google.com]を再度返します。

シナリオ2

  1. "電子メールアドレスごとに複数のアカウントを" 有効にします。まず電子メール/パスワードでユーザーにサインインしてください。
  2. fetchProvidersForEmail()は、[password]を返します。
  3. Googleでサインインしてください。 fetchProvidersForEmail()はまだ[password]のみを返します。
  4. 「複数のアカウントをメールアドレスごとに無効にする」を無効にします。 fetchProvidersForEmail()は今すぐ[google.com]を返します。

"のメールアドレスごとに複数のアカウントは" 有効になっていないと結論

  1. [google.com]が正しく返されます。また、「電子メールアドレスごとに複数のアカウント」が有効になっているときに作成された電子メール/パスワードの優先順位も与えられます。
  2. 「電子メールアドレスごとに複数のアカウント」を有効にすると、[password]が正しく返されます。 [google.com]は返されません。

これは実際に正しい動作ですか?

答えて

0

Googleログインは、GoogleアカウントがすでにFirebaseによって認証されているとみなされるため、他の認証プロバイダの方法より優先されます。

複数のアカウントを有効にすると、電子メールに関連付けられた最初のサインインメソッドが返されます。