Mehrere Authentifizierungsanbieter mit einem Konto über C++ verknüpfen

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. Ein anonymer Nutzer kann auch ein Facebook-Konto verknüpfen und sich später mit Facebook anmelden, um Ihre App weiter zu verwenden.

Hinweis

Unterstützung für zwei oder mehr Authentifizierungsanbieter hinzufügen (möglicherweise anonyme Authentifizierung) an Ihre Anwendung.

So verknüpfen Sie die Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto:

  1. Melden Sie den Nutzer mit einem beliebigen Authentifizierungsanbieter oder einer beliebigen Authentifizierungsmethode an.
  2. Schließen Sie den Anmeldevorgang für den neuen Authentifizierungsanbieter bis, aber nicht ab Dazu gehört auch das Aufrufen einer der firebase::auth::Auth::SignInWithCredential-Methoden. Beispiel: get Das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Nutzers
  3. Rufen Sie eine firebase::auth::Credential für den neuen Authentifizierungsanbieter ab:

    Google Log-in
    firebase::auth::Credential credential =
        firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                          nullptr);
    Facebook-Anmeldung
    firebase::auth::Credential credential =
        firebase::auth::FacebookAuthProvider::GetCredential(access_token);
    Anmeldung mit E-Mail-Passwort
    firebase::auth::Credential credential =
        firebase::auth::EmailAuthProvider::GetCredential(email, password);
  4. Übergeben Sie das firebase::auth::Credential-Objekt an das LinkWithCredential-Methode:

    // Link the new credential to the currently active user.
    firebase::auth::User current_user = auth->current_user();
    firebase::Future<firebase::auth::AuthResult> result =
        current_user.LinkWithCredential(credential);

    Der Aufruf von LinkWithCredential 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.
    firebase::auth::User current_user = auth->current_user();
    std::string current_email = current_user.email();
    std::string current_provider_id = current_user.provider_id();
    std::string current_display_name = current_user.display_name();
    std::string current_photo_url = current_user.photo_url();
    
    // Sign in with the new credentials.
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAndRetrieveDataWithCredential(credential);
    
    // To keep example simple, wait on the current thread until call completes.
    while (result.status() == firebase::kFutureStatusPending) {
      Wait(100);
    }
    
    // The new User is now active.
    if (result.error() == firebase::auth::kAuthErrorNone) {
      firebase::auth::User* new_user = *result.result();
    
      // Merge new_user with the user in details.
      // ...
      (void)new_user;
    }

Wenn der Aufruf von LinkWithCredential erfolgreich ist, kann sich der Nutzer jetzt mit einen beliebigen verknüpften Authentifizierungsanbieter nutzen und auf dieselben Firebase-Daten zugreifen.

Sie können die Verknüpfung eines Authentifizierungsanbieters mit einem Konto aufheben, damit sich der Nutzer nicht mehr mit diesem Anbieter anmelden kann.

Wenn Sie die Verknüpfung eines Authentifizierungsanbieters mit einem Nutzerkonto aufheben möchten, übergeben Sie die Anbieter-ID an die Methode Unlink. Sie können die Anbieter-IDs der Authentifizierungsanbieter abrufen. die mit einem Nutzer verknüpft ist, indem sie aufruft. ProviderData

// Unlink the sign-in provider from the currently active user.
firebase::auth::User current_user = auth->current_user();
firebase::Future<firebase::auth::AuthResult> result =
    current_user.Unlink(providerId);