Erste Schritte mit der Firebase-Authentifizierung in C++

Sie können Firebase Authentication verwenden, um Benutzern zu ermöglichen, sich bei Ihrer App mit einer oder mehreren Anmeldemethoden anzumelden, einschließlich E-Mail-Adresse und Kennwortanmeldung, und Verbundidentitätsanbietern wie Google Sign-in und Facebook Login. In diesem Tutorial erfahren Sie, wie Sie Ihrer App eine E-Mail-Adresse und ein Passwort hinzufügen, um mit Firebase Authentication zu beginnen.

Verbinden Sie Ihr C++-Projekt mit Firebase

Bevor Sie können Firebase - Authentifizierung , müssen Sie:

  • 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 für Firebase registriert und konfiguriert.

  • Fügen Sie die Firebase C ++ SDK zu Ihrem C ++ Projekt.

Beachten Sie, dass das Hinzufügen Firebase zu Ihrem C ++ Projekt umfasst Aufgaben sowohl in der Firebase - Konsole und in der offenen C ++ Projekt (zB Sie Firebase Konfigurationsdateien von der Konsole herunterladen, dann bewegen Sie sie 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, bestätigt die E - Mail - Adresse und das Passwort durch den Benutzer zur Verfügung gestellt und sie dann zum Pass CreateUserWithEmailAndPassword Methode:

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

Sie können den Status der Operation Kontoerstellung überprüfen entweder durch einen Rückruf auf der Registrierung CreateUserWithEmailAndPasswordLastResult Zukunft Objekt oder, wenn Sie ein Spiel oder App mit irgendeiner Art von periodischer Aktualisierungsschleife schreiben, durch die Abfrage des Status in der Update - Schleife.

Verwenden Sie beispielsweise einen 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 die Abfrage zu verwenden, führen Sie in der Update-Schleife Ihres Spiels etwa 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());
  }
}

Vorhandene Benutzer anmelden

Erstellen Sie ein Formular, mit dem sich vorhandene Benutzer mit ihrer E-Mail-Adresse und ihrem Kennwort anmelden können. Wenn ein Benutzer das Formular ausfüllt, rufen Sie die SignInWithEmailAndPassword Methode:

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

Rufen Sie das Ergebnis des Anmeldevorgangs auf die gleiche Weise ab, wie Sie das Anmeldeergebnis erhalten haben.

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

Um auf An- 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 Hörer durch die Umsetzung der firebase::auth::AuthStateListener abstrakte Klasse. 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 != 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");
    }
    // ...
  }
};

Bringen Sie den Hörer mit der firebase::auth::Auth Objekt AddAuthStateListener Methode:

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: