Uwierzytelnianie Firebase pozwala użytkownikom na uwierzytelnianie w Firebase za pomocą ich adresów e-mail i haseł oraz do zarządzania kontami opartymi na hasłach w aplikacji.
Zanim zaczniesz
Zanim zaczniesz korzystać z Uwierzytelniania Firebase, musisz:
Zarejestruj projekt Unity i skonfiguruj go pod kątem korzystania z Firebase.
Jeśli Twój projekt w Unity korzysta już z Firebase, oznacza to, że został zarejestrowany i skonfigurowany pod kątem Firebase.
Jeśli nie masz projektu w Unity, możesz pobrać przykładową aplikację.
Dodaj pakiet SDK Firebase Unity (a konkretnie
FirebaseAuth.unitypackage
) do projektu Unity.
Pamiętaj, że dodanie Firebase do projektu Unity wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie Unity (np. musisz pobrać z konsoli pliki konfiguracyjne Firebase, a następnie przenieść je do projektu Unity).
Uzyskaj dostęp do zajęć Firebase.Auth.FirebaseAuth
Klasa FirebaseAuth
jest bramą dla wszystkich wywołań interfejsu API.
Jest dostępna przez FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Tworzenie konta opartego na haśle
Aby utworzyć nowe konto użytkownika z hasłem, wykonaj te czynności w kodzie logowania do aplikacji:
- Gdy nowy użytkownik rejestruje się za pomocą formularza rejestracyjnego w aplikacji, musisz wykonać wszystkie nowe kroki weryfikacji konta, które są wymagane w tej aplikacji. Sprawdź np., czy hasło do nowego konta jest wpisane prawidłowo i czy spełnia Twoje wymagania.
- Utwórz nowe konto, przesyłając jego adres e-mail i hasło
na adres
FirebaseAuth.CreateUserWithEmailAndPassword
:auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception); return; } // Firebase user has been created. Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("Firebase user created successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Logowanie użytkownika za pomocą adresu e-mail i hasła
Procedura logowania użytkownika za pomocą hasła jest podobna do procedury tworzenia nowego konta. W funkcji logowania w aplikacji wykonaj te czynności:
- Gdy użytkownik zaloguje się w Twojej aplikacji, przekaż jego adres e-mail i hasło do
FirebaseAuth.SignInWithEmailAndPassword
:auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
- Możesz też utworzyć dane logowania i zalogować się tak jak w przypadku innych przepływów pracy:
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Zalecane: włącz ochronę wyliczania e-maili
Niektóre metody uwierzytelniania Firebase, które przyjmują adresy e-mail jako parametry, powodują wystąpienie błędów, jeśli adres e-mail nie jest zarejestrowany, gdy trzeba go zarejestrować (np. podczas logowania się za pomocą adresu e-mail i hasła), lub rejestruje, gdy musi być nieużywany (np. podczas zmiany adresu e-mail użytkownika). Może to być pomocne przy podpowiadaniu użytkownikom konkretnych środków zaradczych. Może też być wykorzystywane przez nieuczciwe podmioty do wykrycia adresów e-mail zarejestrowanych przez użytkowników.
Aby ograniczyć to ryzyko, zalecamy włączenie w projekcie ochrony przed wyliczeniem adresów e-mail za pomocą narzędzia Google Cloud gcloud
. Pamiętaj, że włączenie tej funkcji zmienia sposób raportowania błędów Uwierzytelniania Firebase: dopilnuj, aby aplikacja nie korzystała z bardziej szczegółowych błędów.
Następne kroki
Gdy użytkownik loguje się po raz pierwszy, tworzone jest nowe konto użytkownika, które jest łączone z danymi logowania (nazwa użytkownika i hasło, numer telefonu lub informacje o dostawcy uwierzytelniania). Nowe konto jest przechowywane w ramach Twojego projektu Firebase i może być używane do identyfikowania użytkowników we wszystkich aplikacjach w Twoim projekcie niezależnie od tego, jak się on loguje.
-
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu
Firebase.Auth.FirebaseUser
:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
W regułach zabezpieczeń Bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać ze zmiennej
auth
unikalny identyfikator użytkownika zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu różnych dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj
SignOut()
:
auth.SignOut();