Możesz użyć uwierzytelniania Firebase, aby umożliwić użytkownikom logowanie się do aplikacji przy użyciu jednej lub większej liczby metod logowania, w tym logowania za pomocą adresu e-mail i hasła oraz federacyjnych dostawców tożsamości, takich jak logowanie przez Google i logowanie przez Facebooka. W tym samouczku zaczniesz korzystać z uwierzytelniania Firebase, pokazując, jak dodać adres e-mail i hasło logowania do swojej aplikacji.
Połącz swój projekt C++ z Firebase
Zanim będziesz mógł skorzystać z uwierzytelniania Firebase , musisz:
Zarejestruj swój projekt C++ i skonfiguruj go do korzystania z Firebase.
Jeśli Twój projekt C++ korzysta już z Firebase, oznacza to, że jest już zarejestrowany i skonfigurowany dla Firebase.
Dodaj pakiet SDK Firebase C++ do swojego projektu C++.
Pamiętaj, że dodanie Firebase do projektu C++ obejmuje zadania zarówno w konsoli Firebase , jak i w otwartym projekcie C++ (na przykład pobierasz pliki konfiguracyjne Firebase z konsoli, a następnie przenosisz je do projektu C++).
Zarejestruj nowych użytkowników
Utwórz formularz, który umożliwi nowym użytkownikom zarejestrowanie się w Twojej aplikacji przy użyciu adresu e-mail i hasła. Gdy użytkownik wypełni formularz, zweryfikuj podany przez użytkownika adres e-mail i hasło, a następnie przekaż je do metody CreateUserWithEmailAndPassword
:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPassword(email, password);
Możesz sprawdzić status operacji tworzenia konta, rejestrując wywołanie zwrotne w obiekcie CreateUserWithEmailAndPasswordLastResult
Future lub, jeśli piszesz grę lub aplikację z jakąś pętlą okresowych aktualizacji, odpytując stan w pętli aktualizacji.
Na przykład, używając 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);
Lub, aby użyć odpytywania, wykonaj następujący przykład w pętli aktualizacji gry:
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());
}
}
Zaloguj istniejących użytkowników
Utwórz formularz, który umożliwi istniejącym użytkownikom zalogowanie się przy użyciu adresu e-mail i hasła. Gdy użytkownik wypełni formularz, wywołaj metodę SignInWithEmailAndPassword
:
firebase::Future<firebase::auth::AuthResult> result =
auth->SignInWithEmailAndPassword(email, password);
Uzyskaj wynik operacji logowania w taki sam sposób, w jaki uzyskałeś wynik rejestracji.
Ustaw odbiornik stanu uwierzytelniania i uzyskaj dane konta
Aby odpowiadać na zdarzenia logowania i wylogowywania, dołącz odbiornik do obiektu globalnego uwierzytelniania. Ten odbiornik jest wywoływany za każdym razem, gdy zmienia się stan logowania użytkownika. Ponieważ moduł nasłuchiwania działa dopiero po pełnym zainicjowaniu obiektu uwierzytelniania i zakończeniu wszelkich połączeń sieciowych, jest to najlepsze miejsce na uzyskanie informacji o zalogowanym użytkowniku.
Utwórz słuchacza, implementując klasę abstrakcyjną firebase::auth::AuthStateListener
. Na przykład, aby utworzyć odbiornik, który pobiera informacje o użytkowniku, gdy użytkownik pomyślnie 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ą metody AddAuthStateListener
obiektu firebase::auth::Auth
:
MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);
Następne kroki
Dowiedz się, jak dodać obsługę innych dostawców tożsamości i anonimowych kont gości: