Za pomocą Firebase Authentication możesz zezwolić użytkownikom na uwierzytelnianie się w Firebase przy użyciu adresów e-mail i haseł oraz zarządzać kontami opartymi na hasłach w aplikacji.
Zanim zaczniesz
Zanim użyjesz Firebase Authentication , musisz:
Zarejestruj projekt Unity i skonfiguruj go tak, aby używał Firebase.
Jeśli Twój projekt w Unity korzysta już z Firebase, jest już zarejestrowany i skonfigurowany pod kątem tej usługi.
Jeśli nie masz projektu w Unity, możesz pobrać przykładową aplikację .
Dodaj pakiet SDK Firebase Unity (szczególnie plik 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. pobieranie plików konfiguracji Firebase z konsoli i przenoszenie ich do projektu Unity).
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 z hasłem
Aby utworzyć nowe konto użytkownika z hasłem, wykonaj te czynności w aplikacji z kodem logowania:
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, przekazując adres e-mail i hasło nowego użytkownika do 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 );
});
Aby chronić Twój projekt przed nadużyciami, Firebase ogranicza liczbę nowych rejestracji za pomocą adresu e-mail i hasła oraz rejestracji anonimowych, które Twoja aplikacja może zarejestrować w krótkim czasie z tego samego adresu IP. Możesz poprosić o tymczasową zmianę limitu i zaplanować ją w konsoli Firebase .
Logowanie użytkownika przy użyciu adresu e-mail i hasła
Procedura logowania się 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 aplikacji, prześlij jego adres e-mail i hasło do funkcji 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ć te dane logowania i zalogować się w sposób podobny do innych procesów:
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: skonfiguruj zasady dotyczące haseł
Możesz zwiększyć bezpieczeństwo konta, egzekwując wymogi dotyczące złożoności haseł.
Aby skonfigurować zasadę dotyczącą haseł w projekcie, otwórz kartę Zasady dotyczące haseł na stronie Ustawienia uwierzytelniania w konsoli Firebase :
Ustawienia uwierzytelniania
Firebase Authentication zasady dotyczące haseł obsługują te wymagania dotyczące haseł:
Wymagane są małe litery
Wymagany jest znak w wielkiej literze
Wymagany znak liczbowy
Wymagany znak niealfanumeryczny
Te znaki spełniają wymagania dotyczące znaków niealfanumerycznych:^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
Minimalna długość hasła (od 6 do 30 znaków; domyślnie 6)
Maksymalna długość hasła (maksymalnie 4096 znaków)
Możesz włączyć egzekwowanie zasad dotyczących haseł w 2 trybach:
Wymagaj: próby rejestracji nie będą się udawać, dopóki użytkownik nie zmieni hasła zgodnie z Twoimi zasadami.
Powiadomienie: użytkownicy mogą się rejestrować przy użyciu hasła, które nie spełnia wymogów. Korzystając z tego trybu, sprawdź, czy hasło użytkownika jest zgodne z zasadami po stronie klienta, i poproś użytkownika o zmianę hasła, jeśli nie jest ono zgodne z zasadami.
Nowi użytkownicy muszą zawsze wybrać hasło zgodne z Twoimi zasadami.
Jeśli masz aktywnych użytkowników, nie zalecamy włączania wymuszania aktualizacji podczas logowania, chyba że zamierzasz zablokować dostęp użytkownikom, których hasła nie są zgodne z Twoimi zasadami. Zamiast tego użyj trybu informowania, który pozwala użytkownikom na logowanie się za pomocą bieżących haseł i informuje ich o wymaganiach, których ich hasło nie spełnia.
Zalecane: włącz ochronę przed wyliczaniem adresów e-mail
Niektóre metody Firebase Authentication , które przyjmują adresy e-mail jako parametry, zgłaszają określone błędy, jeśli adres e-mail jest niezarejestrowany, gdy musi być zarejestrowany (np. podczas logowania się za pomocą adresu e-mail i hasła), lub zarejestrowany, gdy musi być nieużywany (np. podczas zmiany adresu e-mail użytkownika).
Może to być pomocne w przekazywaniu użytkownikom konkretnych środków zaradczych, ale może też być wykorzystywane przez nieuczciwe podmioty do wykrywania 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 działanie raportowania błędów w Firebase Authentication : dopilnuj, aby Twoja aplikacja nie polegała na bardziej szczegółowych błędach.
Następne kroki
Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i połączone z danymi logowania, czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami dostawcy uwierzytelniania, za pomocą których użytkownik się zalogował. To nowe konto jest przechowywane w projekcie Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w projekcie, niezależnie od tego, jak użytkownik się loguje.
W swoich aplikacjach możesz pobrać 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 Firebase Realtime Database i Cloud Storage Regułach bezpieczeństwa możesz pobrać z zmiennej auth
unikalny identyfikator zalogowanego użytkownika i używać go do kontrolowania dostępu użytkownika do danych.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą danych uwierzytelniających od różnych dostawców, łącząc je z dotychczasowym kontem użytkownika .
Aby wylogować użytkownika, wywołaj
SignOut()
:
auth . SignOut ();