Beginnen Sie mit der Firebase-Authentifizierung in C++

Sie können die Firebase-Authentifizierung verwenden, um Benutzern die Anmeldung bei Ihrer App mit einer oder mehreren Anmeldemethoden zu ermöglichen, einschließlich der Anmeldung per E-Mail-Adresse und Passwort sowie mit föderierten Identitätsanbietern wie Google Sign-in und Facebook Login. Dieses Tutorial erleichtert Ihnen den Einstieg in die Firebase-Authentifizierung, indem es Ihnen zeigt, wie Sie Ihrer App eine E-Mail-Adresse und ein Anmeldekennwort 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 offenen C++-Projekt erfordert (Sie laden beispielsweise Firebase-Konfigurationsdateien von der Konsole herunter und verschieben sie dann in Ihr C++-Projekt).

Melden Sie neue Benutzer an

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 sie dann an die Methode CreateUserWithEmailAndPassword :

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

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

Verwenden Sie beispielsweise eine Zukunft:

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);

Um die Abfrage zu nutzen, führen Sie in der Update-Schleife Ihres Spiels etwa das folgende Beispiel aus:

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());
  }
}

Melden Sie bestehende 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 Methode SignInWithEmailAndPassword auf:

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

Erhalten Sie das Ergebnis des Anmeldevorgangs auf die gleiche Weise wie das Anmeldeergebnis.

Legen Sie einen Authentifizierungsstatus-Listener fest und rufen Sie Kontodaten ab

Um auf Anmelde- und Abmeldeereignisse zu reagieren, fügen 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 wurde und alle Netzwerkaufrufe abgeschlossen sind, ist er 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 abruft, 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.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 mit der AddAuthStateListener Methode des 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: