2017-11-19 6 views
0

Ich mache eine Android-App mit Firebase und FirebaseUI. Die App ermöglicht die Anmeldung mit E-Mail und Passwort, Google und Facebook. Wie finde ich heraus, welche dieser Anmeldemethoden der Benutzer verwendet hat?Überprüfen Sie, welche Authentifizierungsmethode vom Benutzer für die aktuelle Sitzung verwendet wurde

beschreiben die Strömung hier:

  1. Benutzer sieht Anmeldebildschirm (FirebaseUI)
  2. Benutzer verwendet bevorzugte Zeichen in Methode und Zeichen in
  3. Nächstes Layout wird nach dem Anmelde-Verfahren gezeigt, die von der Benutzer

Zum Beispiel

//this activity is launched after successful sign in 
public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(/*signed in with email-password*/) 
    setContentView(R.layout.activity_main_email); 
    else if(/*signed in with google*/) 
    setContentView(R.layout.activity_main_google); 
    else //signed in with facebook 
    setContentView(R.layout.activity_main_facebook); 
    //do something 
} 

Antwort

1

nach this Frank van Puffelen geschrieben, dass dies durch die Überprüfung der Provider-Daten des aktuellen Benutzers erreicht werden könnte.

nach seiner Lösung tun es wie folgt aus:

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //detect provider id like that 

    for(UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()){ 

    if(user.getProviderId().equals("facebook.com")){ 
    //logged with Facebook 

    } 

    if(user.getProviderId().equals("google.com")){ 
    //logged with google 

    } 


    } 
+0

String-Konstanten werden für jede Provider-ID definiert, die in den Gleichheitsprüfungen verwendet werden kann. Beispiel: [GoogleAuthProvider.PROVIDER_ID] (https://firebase.google.com/docs/reference/android/com/google/firebase/auth/GoogleAuthProvider#constants) –

0

Während Sie die Liste der Anbieter von FirebaseAuth.getInstance().getCurrentUser().getProviderData() bekommen kann ein Benutzer mehrere Anbieter verbunden haben könnte. Wenn Sie also den ersten Anbieter auswählen, wird immer derselbe Anbieter angezeigt, auch wenn ein anderer verknüpfter Anbieter angemeldet wurde. Die genaueste Methode zum Ermitteln des aktuellen Anbieters für die Anmeldung besteht darin, das Feld des ID-Tokens zu überprüfen: firebase.sign_in_provider.

Verwandte Themen