Możesz zintegrować Firebase Authentication z niestandardowym systemem uwierzytelniania, modyfikując serwer uwierzytelniania tak, aby generował niestandardowe podpisane tokeny, gdy użytkownik się zaloguje. Twoja aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.
Zanim zaczniesz
-
Zanim zaczniesz korzystać z Firebase Authentication, musisz:
- zarejestrować projekt w Unity w projekcie w Firebase;
- dodać pakiet SDK Firebase Unity (w szczególności,
FirebaseAuth.unitypackage) do projektu w Unity.
Szczegółowe instrukcje dotyczące tych wstępnych kroków znajdziesz w artykule Dodawanie Firebase do projektu w Unity.
- Pobierz klucze serwera projektu:
-
W konsoli Firebase otwórz ustawienia
Ustawienia > Konta usługi. - U dołu sekcji pakiet Firebase Admin SDK kliknij Wygeneruj nowy klucz prywatny.
- Para kluczy publicznego i prywatnego nowego konta usługi zostanie automatycznie zapisana na Twoim komputerze. Skopiuj ten plik na serwer uwierzytelniania.
-
W konsoli Firebase otwórz ustawienia
Uwierzytelnianie w Firebase
KlasaFirebaseAuth to brama do wszystkich wywołań interfejsu API.
Jest ona dostępna przez FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Wywołaj Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync z tokenem z serwera uwierzytelniania.
- Gdy użytkownicy logują się w Twojej aplikacji, wyślij ich dane logowania (np. nazwę użytkownika i hasło) na serwer uwierzytelniania. Serwer sprawdza dane logowania i zwraca niestandardowy token , jeśli są one prawidłowe.
- Gdy otrzymasz niestandardowy token z serwera uwierzytelniania, przekaż go do
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync, aby zalogować użytkownika:auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCustomTokenAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCustomTokenAsync 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); });
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika, które zostanie połączone z danymi logowania – nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania. To nowe konto jest przechowywane jako część projektu w Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od sposobu logowania.
-
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z
Firebase.Auth.FirebaseUserobiektu: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 bezpieczeństwa Firebase Realtime Database i Cloud Storage Bazy danych czasu rzeczywistego Firebase i Cloud Storage, możesz uzyskać unikalny identyfikator zalogowanego użytkownika z zmiennej
auth, i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania przez połączenie danych logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj
SignOut():
auth.SignOut();