2017-05-01 52 views
0

我正在使用谷歌登錄的Facebook &的Firebase身份驗證。成功登錄後,我也在自己的服務器上註冊用戶。檢測通過Facebook/Google的第一個身份驗證

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

這是第一次正常工作。但第二次用戶登錄時,我的後端抱怨,因爲具有這些憑據的用戶已經存在。

如何檢測用戶是否第一次通過某個給定的提供者登錄?我無法使用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 
      } 
    } 
} 

使用上面的代碼獲取提供者。