Erste Schritte mit der Firebase-Authentifizierung in C++

Mit Firebase Authentication können Sie Nutzern erlauben, sich mit einer oder mehreren Anmeldemethoden in Ihrer App anzumelden, einschließlich der Anmeldung per E-Mail-Adresse und Passwort sowie über föderierte Identitätsanbieter wie Google Log-in und Facebook Log-in. In dieser Anleitung erfahren Sie, wie Sie mit Firebase Authentication loslegen und Ihrer App die Anmeldung per E-Mail-Adresse und Passwort hinzufügen.

C++-Projekt mit Firebase verbinden

Vor der Verwendung Firebase Authentication, sind folgende Schritte erforderlich:

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

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

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

Beachten Sie, dass das Hinzufügen von Firebase zu Ihrem C++-Projekt sowohl Aufgaben im Firebase-Konsole und in Ihrem offenen C++-Projekt, z. B. wenn Sie Firebase-Konfigurationsdateien aus der Console aus und verschieben Sie sie dann in Ihr C++-Projekt.

Neue Nutzer anmelden

Erstellen Sie ein Formular, über das sich neue Nutzer mit ihrem E-Mail-Adresse und ein Passwort. Wenn ein Nutzer das Formular ausfüllt, validieren Sie die von ihm angegebene E-Mail-Adresse und das Passwort und übergeben Sie sie dann an die Methode CreateUserWithEmailAndPassword:

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

Sie können den Status der Kontoerstellung entweder prüfen, indem Sie einen Rückruf für das CreateUserWithEmailAndPasswordLastResult-Objekt registrieren, oder, wenn Sie ein Spiel oder eine App mit einer Art regelmäßiger Updateschleife entwickeln, indem Sie den Status in der Updateschleife abfragen.

So verwenden Sie beispielsweise ein Future:

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& 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);

Wenn Sie Umfragen verwenden möchten, gehen Sie wie im folgenden Beispiel in der Aktualisierungsschleife:

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

Vorhandene Nutzer anmelden

Erstellen Sie ein Formular, mit dem sich bestehende Nutzer mit ihrer E-Mail-Adresse und ihrem Passwort anmelden können. Rufen Sie die Methode SignInWithEmailAndPassword auf, wenn ein Nutzer das Formular ausgefüllt hat:

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

Rufe das Ergebnis der Anmeldung auf die gleiche Weise ab wie das Ergebnis der Registrierung.

Listener für den Authentifizierungsstatus festlegen und Kontodaten abrufen

Wenn Sie auf Anmelde- und Abmeldeereignisse reagieren möchten, hängen Sie einen Listener an das globale Authentifizierungsobjekt an. Dieser Listener wird aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert. Da der Listener erst ausgeführt wird, nachdem das Authentifizierungsobjekt vollständig initialisiert ist. Nachdem Netzwerkaufrufe abgeschlossen sind, um Informationen zum angemeldeten Nutzer zu erhalten.

Listener durch Implementieren des firebase::auth::AuthStateListener erstellen abstrakte Klasse. So erstellen Sie beispielsweise einen Listener, der Informationen zum Nutzer abrufen kann, wenn er sich erfolgreich angemeldet hat:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User user = auth.current_user();
    if (user.is_valid()) {
      // 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 an das Objekt firebase::auth::Auth an. AddAuthStateListener-Methode:

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

Nächste Schritte

Weitere Informationen zum Hinzufügen der Unterstützung für andere Identitätsanbieter und anonyme Gäste Konten: