Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen. Die Nutzer werden unabhängig davon, ob sie Authentifizierungsanbieter, mit dem er sich angemeldet hat. Beispiel: Ein Nutzer, der sich mit einem Passwort ein Google-Konto verknüpfen und sich mit beiden Methoden im in der Zukunft. Oder ein anonymer Nutzer kann ein Facebook-Konto verknüpfen und später sich bei Facebook an, damit Sie Ihre App weiterhin nutzen können.
Hinweis
Unterstützung für zwei oder mehr Authentifizierungsanbieter hinzufügen (möglicherweise anonyme Authentifizierung) an Ihre Anwendung.
Die KlasseFirebaseAuth
ist das Gateway für alle API-Aufrufe.
Sie können über FirebaseAuth.DefaultInstance darauf zugreifen.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Anmeldedaten des Authentifizierungsanbieters mit einem Nutzerkonto verknüpfen
So verknüpfen Sie die Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto:
- Melden Sie den Nutzer mit einem beliebigen Authentifizierungsanbieter oder einer beliebigen Authentifizierungsmethode an.
- Schließen Sie den Anmeldevorgang für den neuen Authentifizierungsanbieter bis, aber nicht ab
Dazu gehört auch das Aufrufen einer der
Firebase.Auth.FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync
-Methoden. Beispiel: get Das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Nutzers Rufen Sie eine
Google Log-inFirebase.Auth.Credential
für den neuen Authentifizierungsanbieter ab: Facebook-AnmeldungFirebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
Anmeldung mit E-Mail-PasswortFirebase.Auth.Credential credential = Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
Übergeben Sie das
Firebase.Auth.Credential
-Objekt an die MethodeLinkWithCredentialAsync
des angemeldeten Nutzers:auth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("LinkWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("LinkWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Der Aufruf von
LinkWithCredentialAsync
schlägt fehl, wenn die Anmeldedaten bereits mit einem anderen Nutzerkonto verknüpft ist. In diesem Fall müssen Sie die Konten und die zugehörigen Daten entsprechend Ihrer App zusammenführen:// Gather data for the currently signed in User. string currentUserId = auth.CurrentUser.UserId; string currentEmail = auth.CurrentUser.Email; string currentDisplayName = auth.CurrentUser.DisplayName; System.Uri currentPhotoUrl = auth.CurrentUser.PhotoUrl; // Sign in with the new credentials. auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); // TODO: Merge app specific details using the newUser and values from the // previous user, saved above. });
Wenn der Aufruf von LinkWithCredentialAsync
erfolgreich ist, kann sich der Nutzer jetzt mit
einen beliebigen verknüpften Authentifizierungsanbieter nutzen
und auf dieselben Firebase-Daten zugreifen.
Verknüpfung eines Authentifizierungsanbieters mit einem Nutzerkonto aufheben
Sie können die Verknüpfung eines Authentifizierungsanbieters mit einem Konto aufheben, sodass der Nutzer sich nicht länger bei diesem Anbieter anmelden.
Wenn Sie die Verknüpfung eines Authentifizierungsanbieters mit einem Nutzerkonto aufheben möchten, übergeben Sie die Anbieter-ID an den
UnlinkAsync
-Methode. Sie können die Anbieter-IDs der Authentifizierung abrufen.
mit einem Nutzer über einen Aufruf von
ProviderData
// Unlink the sign-in provider from the currently active user. // providerIdString is a string identifying a provider, // retrieved via FirebaseAuth.FetchProvidersForEmail(). auth.CurrentUser.UnlinkAsync(providerIdString).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UnlinkAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UnlinkAsync encountered an error: " + task.Exception); return; } // The user has been unlinked from the provider. Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("Credentials successfully unlinked from user: {0} ({1})", result.User.DisplayName, result.User.UserId); });