Erste Schritte mit der Firebase-Authentifizierung in C++

Du kannst Firebase Authentication verwenden, um Nutzern zu erlauben, sich damit in deiner App anzumelden oder mehr Anmeldemethoden, einschließlich Anmeldung mit E-Mail-Adresse und Passwort, und Anbieter föderierter Identitäten wie Google Log-in und Facebook Login. Dieses Anleitung für den Einstieg in Firebase Authentication, indem Sie zeigen, wie Sie E-Mail-Adresse und Passwort für die Anmeldung in der App.

C++-Projekt mit Firebase verbinden

Bevor Sie Firebase Authentication 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 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 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 E-Mail-Adresse und Passwort, die der Nutzer angegeben hat, und geben Sie diese an den CreateUserWithEmailAndPassword-Methode:

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

Sie können den Status der Kontoerstellung überprüfen, indem Sie sich entweder einen Callback für das CreateUserWithEmailAndPasswordLastResult-Future-Objekt oder wenn Sie ein Spiel oder eine App mit einer regelmäßigen Aktualisierungsschleife schreiben, den Status in der Aktualisierungsschleife 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 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, über das sich bestehende Nutzer mit ihrer E-Mail-Adresse anmelden können und Passwort. Rufen Sie die Methode SignInWithEmailAndPassword auf, wenn ein Nutzer das Formular ausgefüllt hat:

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

Rufen Sie das Ergebnis des Anmeldevorgangs auf die gleiche Weise ab wie das Ergebnis der Anmeldung.

Authentifizierungsstatus-Listener festlegen und Kontodaten abrufen

Um auf An- und Abmeldeereignisse zu reagieren, müssen Sie dem globalen Authentifizierungsobjekt. 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. Um beispielsweise einen Listener zu erstellen, der Informationen für den Nutzer, 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: