Pierwsze kroki z Uwierzytelnianiem Firebase w C++

Możesz użyć uwierzytelniania Firebase, aby zezwolić użytkownikom na logowanie się w Twojej aplikacji za pomocą lub więcej metod logowania, w tym logowanie za pomocą adresu e-mail i hasła, dostawców tożsamości sfederowanych, takich jak Logowanie przez Google i Logowanie przez Facebooka. Ten pokazuje, jak zacząć korzystać z Uwierzytelniania Firebase. Pokażemy, jak dodać adres e-mail i hasło, aby zalogować się w aplikacji.

Połącz swój projekt w C++ z Firebase

Zanim będzie można użyć Uwierzytelnianie Firebase, musisz:

  • Zarejestruj swój projekt C++ i skonfiguruj go pod kątem korzystania z Firebase.

    Jeśli Twój projekt w C++ korzysta już z Firebase, to jest już zarejestrowany skonfigurowane na potrzeby Firebase.

  • Dodaj pakiet SDK Firebase C++ do projektu w C++.

.

Pamiętaj, że dodanie Firebase do projektu C++ wymaga wykonania zadań zarówno w w konsoli Firebase i w otwartym projekcie C++ (np. pobranym pliki konfiguracyjne Firebase z poziomu konsoli, a następnie przenieś je do projektu C++).

Zarejestruj nowych użytkowników

Utwórz formularz, który pozwala nowym użytkownikom zarejestrować się w aplikacji za pomocą adres e-mail i hasło. Gdy użytkownik wypełni formularz, sprawdź, czy adresu e-mail i hasła podanych przez użytkownika, a następnie przekazać je Metoda CreateUserWithEmailAndPassword:

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

Stan procesu tworzenia konta możesz sprawdzić, rejestrując się wywołanie zwrotne obiektu CreateUserWithEmailAndPasswordLastResult Future lub jeśli tworzysz grę lub aplikację z pętlą okresowych aktualizacji, sondowanie stanu w pętli aktualizacji.

Na przykład użycie przyszłości:

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

Albo, aby używać ankiet, zrób coś takiego jak w przykładzie poniżej pętla aktualizacji:

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

Logowanie istniejących użytkowników

Utwórz formularz, który umożliwia dotychczasowym użytkownikom logowanie się za pomocą ich adresów e-mail i hasło. Gdy użytkownik wypełni formularz, wywołaj metodę Metoda SignInWithEmailAndPassword:

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

Uzyskaj wynik operacji logowania w taki sam sposób jak wynik rejestracji.

Ustawianie detektora stanu uwierzytelniania i pobieranie danych konta

Aby odpowiadać na zdarzenia logowania i wylogowania, dołącz detektor do globalnego uwierzytelniania. Ten detektor jest wywoływany za każdym razem, gdy użytkownik się loguje zmian stanu. Ponieważ odbiornik działa dopiero po tym, jak obiekt uwierzytelniania i po zakończeniu wywołań sieciowych najlepiej jest miejsce, w którym można znaleźć informacje o zalogowanym użytkowniku.

Utwórz detektor, implementując interfejs firebase::auth::AuthStateListener klasa abstrakcyjna. Na przykład: aby utworzyć detektor, który pobiera informacje o: użytkownika, gdy użytkownik się zaloguje:

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");
    }
    // ...
  }
};

Dołącz detektor za pomocą modułu firebase::auth::Auth Metoda AddAuthStateListener:

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

Dalsze kroki

Dowiedz się, jak dodać obsługę innych dostawców tożsamości i anonimowych gości konta: