2017-06-07 6 views
0

Ich möchte Firebase als meine App-Authentifizierungsmethode verwenden. Aber ich möchte, dass sich meine Nutzer mit Google oder Facebook einloggen. Ich bin ein wenig verwirrt, was hier passiert.Firebase-Authentifizierung - Firebase unterscheidet Facebook und Google Login-Konten

Lässt sich ein Benutzer erfolgreich nur mit Facebook authentifizieren. Dann bekomme ich einen Rückruf von Facebook mit einigem Erfolg. Jetzt sende ich diesen Token zur weiteren Authentifizierung an Firebase. Firebase kann Erfolg oder Misserfolg zurückgeben. Dieser Teil verstehe ich.

Aber was mich verwirrt ist, wenn der gleiche Benutzer das Google-Konto verwendet, um sich anzumelden, wird das nicht als ein anderer Login betrachtet? Wird Firebase wissen, dass der Facebook-Nutzer derselbe Google-Nutzer ist oder wird er zwei verschiedene Accounts erstellen? Ich möchte nicht, dass der Benutzer zwei verschiedene Konten hat, weil sie einen anderen Anmeldeanbieter gewählt haben. Ich möchte, dass der Firebase den gleichen Benutzer kennt. Deshalb wollte ich die Firebase-Authentifizierung als zentralen Ort nutzen. Kann mir jemand Rat geben?

UPDATE:

Danke. Wenn ich also richtig verstanden habe, muss bereits mindestens ein Account im Firebase angemeldet sein, um einen anderen zu verlinken? Also das ist der Fall ... stell dir vor, ich bin derzeit mit einem Google-Konto angemeldet. Wie würde ich den Nutzer bitten, dort sein Facebook-Konto zu verlinken? Ich wünschte, ich könnte den zweiten Account nahtlos verknüpfen, aber scheint, dass Sie nicht können. Wie kann der Nutzer den Account veranlassen oder unter welchen Bedingungen kann ich den zweiten Account mühelos verknüpfen? Ich habe Probleme zu visualisieren, wie das funktionieren würde, ohne dass ich den Benutzer direkt frage.

Antwort

2

Solange der Benutzer dieselbe E-Mail-Adresse für beide Anbieter verwendet, können Sie Firebase anweisen, die beiden Konten miteinander zu verknüpfen. Siehe die section on linking providers in the Firebase documentation.

+0

Ich habe meine Frage aktualisiert – j2emanue

+0

Kontoverknüpfung kann ziemlich nahtlos sein, aber immer etwas Aktion vom Benutzer erfordern. Es wäre ziemlich schlimm, wenn eine App die Facebook + Google + Twiter-Konten des Benutzers magisch verbindet, ohne sie zu bitten, sich in diesen Profilen anzumelden. Wenn Sie Schwierigkeiten haben, funktioniert es, teilen Sie den [Mindestcode, der reproduziert, wo Sie hängen] (http://stackoverflow.com/help/mcve). –

1

Firebase unterstützt mehrere Auth Provider für ein Konto. Alles, was Sie tun müssen, ist die Verwendung der Methode linkWithCredential (credential). Hier ist ein Code-Snipset von Firebase Website.

mAuth.getCurrentUser().linkWithCredential(credential) 
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       Log.d(TAG, "linkWithCredential:success"); 
       FirebaseUser user = task.getResult().getUser(); 
       updateUI(user); 
      } else { 
       Log.w(TAG, "linkWithCredential:failure", task.getException()); 
       Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", 
         Toast.LENGTH_SHORT).show(); 
       updateUI(null); 
      } 

      // ... 
     } 
    }); 

Beachten Sie, dass der Anruf zu linkWithCredential wird scheitern, wenn die Anmeldeinformationen bereits auf ein anderes Benutzerkonto verknüpft sind. In diesem Fall müssen Sie die Konten und zugehörigen Daten entsprechend Ihrer App zusammenführen.

+0

Ich habe meine Frage aktualisiert – j2emanue

Verwandte Themen