Check out what’s new from Firebase at Google I/O 2022. Learn more

Erste Schritte mit der Firebase-Authentifizierung in C++

Sie können die Firebase-Authentifizierung verwenden, um Benutzern zu ermöglichen, sich mit einer oder mehreren Anmeldemethoden bei Ihrer App anzumelden, einschließlich der Anmeldung mit E-Mail-Adresse und Kennwort sowie föderierten Identitätsanbietern wie Google-Anmeldung und Facebook-Anmeldung. Dieses Tutorial führt Sie zu den ersten Schritten mit der Firebase-Authentifizierung, indem es Ihnen zeigt, wie Sie Ihrer App eine E-Mail-Adresse und eine Kennwortanmeldung hinzufügen.

Verbinden Sie Ihr C++-Projekt mit Firebase

Bevor Sie die Firebase-Authentifizierung verwenden können, müssen Sie Folgendes tun:

  • Registrieren Sie Ihr C++-Projekt und konfigurieren Sie es für die Verwendung von Firebase.

    Wenn Ihr C++-Projekt Firebase bereits verwendet, ist es bereits für Firebase registriert und konfiguriert.

  • Fügen Sie das Firebase C++ SDK zu Ihrem C++-Projekt hinzu.

Beachten Sie, dass das Hinzufügen von Firebase zu Ihrem C++-Projekt Aufgaben sowohl in der Firebase-Konsole als auch in Ihrem geöffneten C++-Projekt umfasst (Sie laden beispielsweise Firebase-Konfigurationsdateien von der Konsole herunter und verschieben sie dann in Ihr C++-Projekt).

Registrieren Sie neue Benutzer

Erstellen Sie ein Formular, das es neuen Benutzern ermöglicht, sich mit ihrer E-Mail-Adresse und einem Passwort bei Ihrer App zu registrieren. Wenn ein Benutzer das Formular ausfüllt, validieren Sie die vom Benutzer bereitgestellte E-Mail-Adresse und das Kennwort und übergeben Sie diese dann an die Methode CreateUserWithEmailAndPassword :

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPassword(email, password);

Sie können den Status des Kontoerstellungsvorgangs überprüfen, indem Sie entweder einen Rückruf für das CreateUserWithEmailAndPasswordLastResult Future-Objekt registrieren oder, wenn Sie ein Spiel oder eine App mit einer Art regelmäßiger Aktualisierungsschleife schreiben, den Status in der Aktualisierungsschleife abfragen.

Zum Beispiel mit einem Future:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

Oder um Abfragen zu verwenden, führen Sie in der Aktualisierungsschleife Ihres Spiels etwas wie das folgende Beispiel aus:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Melden Sie vorhandene Benutzer an

Erstellen Sie ein Formular, das es bestehenden Benutzern ermöglicht, sich mit ihrer E-Mail-Adresse und ihrem Passwort anzumelden. Wenn ein Benutzer das Formular ausfüllt, rufen Sie die SignInWithEmailAndPassword Methode auf:

firebase::Future<firebase::auth::User*> result =
    auth->SignInWithEmailAndPassword(email, password);

Rufen Sie das Ergebnis des Anmeldevorgangs genauso ab wie das Anmeldeergebnis.

Legen Sie einen Listener für den Authentifizierungsstatus fest und rufen Sie Kontodaten ab

Um auf Anmelde- und Abmeldeereignisse zu reagieren, hängen Sie einen Listener an das globale Authentifizierungsobjekt an. Dieser Listener wird immer dann aufgerufen, wenn sich der Anmeldestatus des Benutzers ändert. Da der Listener erst ausgeführt wird, nachdem das Authentifizierungsobjekt vollständig initialisiert und alle Netzwerkaufrufe abgeschlossen wurden, ist dies der beste Ort, um Informationen über den angemeldeten Benutzer abzurufen.

Erstellen Sie den Listener, indem Sie die abstrakte Klasse firebase::auth::AuthStateListener implementieren. So erstellen Sie beispielsweise einen Listener, der Informationen über den Benutzer erhält, wenn sich ein Benutzer erfolgreich anmeldet:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user->uid().c_str());
      const std::string displayName = user->DisplayName();
      const std::string emailAddress = user->Email();
      const std::string photoUrl = user->PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

Hängen Sie den Listener mit der AddAuthStateListener -Methode des firebase firebase::auth::Auth -Objekts an:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

Nächste Schritte

Erfahren Sie, wie Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzufügen: