2017-05-01 6 views
0

Facebookの& GoogleログインでFirebase Authを使用しています。ログインに成功した後、自分のサーバーにユーザーを登録します。Facebook/Google経由の最初の認証を検出する場合

// facebook or google auth 
firebaseAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      registerOnServer(task); 
     } 
    }); 

これは初めて正常に動作します。しかし、ユーザーが2回目にログインすると、私のバックエンドは、これらの資格情報を持つユーザーが既に存在するために不平を言う。

ユーザーが指定したプロバイダーの1人で初めてログインするかどうかを検出するにはどうすればよいですか? SharedPreferesは、ユーザーがアプリをアンインストールした後に消去されるため再利用できません。再インストール後に問題が発生します。

答えて

1
firebaseAuth.fetchProvidersForEmail(userEmail). 
addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>() { 
    @Override 
    public void onComplete(@NonNull Task<ProviderQueryResult> task) { 
     List<String> providerList = task.getResult().getProviders(); 
      if (providerList.isEmpty()) { 
       //Empty List means new user 
      } 
      else if (providerList.contains("facebook.com")) { 
       //Facebook is the provider 
      } 
    } 
} 

プロバイダーを取得するには、コードの上に使用します。

関連する問題