Możesz zezwolić użytkownikom na uwierzytelnianie w Firebase za pomocą kont Google, integrując Logowanie przez Google z aplikacją.
Zanim zaczniesz
Konfigurowanie projektu Unity
Zanim zaczniesz korzystać z Firebase Authentication, musisz:
Zarejestruj projekt Unity i skonfiguruj go tak, aby korzystał z Firebase.
Jeśli Twój projekt Unity korzysta już z Firebase, jest już zarejestrowany i skonfigurowany pod kątem Firebase.
Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Dodaj do projektu Unity pakiet SDK Firebase Unity (a konkretnie
FirebaseAuth.unitypackage).
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ć pliki konfiguracji Firebase z konsoli, a następnie przenieść je do projektu Unity).
Konfigurowanie projektu w Firebase i danych logowania
Android: podaj odcisk cyfrowy SHA-1 aplikacji w konsoli Firebase:
- W konsoli Firebase otwórz
Ustawienia > karta Ogólne. Otwórz kartę Twoje aplikacje, wybierz aplikację na Androida i dodaj odcisk cyfrowy SHA-1 w polu Odciski cyfrowe certyfikatu SHA.
Odcisk cyfrowy SHA-1 magazynu kluczy możesz pobrać za pomocą
keytool:keytool -keystore path-to-keystore.keystore -list -vWięcej informacji o pobieraniu odcisku cyfrowego SHA aplikacji znajdziesz w artykule Uwierzytelnianie klienta.
- W konsoli Firebase otwórz
Włącz Logowanie przez Google i skopiuj identyfikator klienta internetowego:
- W konsoli Firebase otwórz Zabezpieczenia > Uwierzytelnianie.
- Na karcie Sign-in method (Metoda logowania) włącz dostawcę logowania Google.
- Rozwiń sekcję Konfiguracja pakietu Web SDK i skopiuj identyfikator klienta internetowego (np.
123456-abc.apps.googleusercontent.com). Reprezentuje on oświadczenie o odbiorcach (aud) Twoich tokenów identyfikacji i jest wymagany zarówno w przypadku Androida, jak i iOS. - Kliknij Zapisz.
Zaktualizuj pliki konfiguracji Firebase i skopiuj odwrócony identyfikator klienta iOS:
- Pobierz najnowsze pliki konfiguracji Firebase z konsoli Firebase (
na Androida igoogle-services.json na iOS) i zastąp nimi starsze kopie w projekcie Unity. (patrz Dodawanie Firebase do projektu Unity).GoogleService-Info.plist - iOS: otwórz plik
i skopiuj wartość kluczaGoogleService-Info.plist REVERSED_CLIENT_ID(np.com.googleusercontent.apps.12345-abc). Ta wartość jest wymagana do skonfigurowania schematu URI adresu URL przekierowania na iOS.
- Pobierz najnowsze pliki konfiguracji Firebase z konsoli Firebase (
Integracja wtyczki Logowanie przez Google z projektem Unity
Zaimportuj wtyczkę:
- Jeśli przeprowadzasz integrację z istniejącym projektem, utwórz kopię zapasową projektu i usuń starsze wtyczki logowania przez Google, zanim przejdziesz dalej.
- Pobierz
GoogleSignInNative.unitypackagez GitHub i zaimportuj do projektu Unity (Zasoby > Importuj pakiet > Pakiet niestandardowy). Upewnij się, że wszystkie pliki są zaznaczone, i kliknij Importuj.
Skonfiguruj ustawienia wtyczki:
- W edytorze Unity kliknij Window > Google Sign-In Native > Settings (Okno > Logowanie przez Google > Ustawienia).
- Wklej identyfikator klienta sieci Web w pierwszym polu.
- Wklej odwrócony identyfikator klienta iOS w drugim polu.
- Kliknij Save Settings (Zapisz ustawienia).
Rozwiązywanie zależności natywnych:
- Kliknij Assets > External Dependency Manager > Android Resolver > Force Resolve (Zasoby > Menedżer zależności zewnętrznych > Narzędzie do rozwiązywania problemów z Androidem > Wymuś rozwiązanie).
- Poczekaj na komunikat o powodzeniu. Spowoduje to pobranie natywnych bibliotek
googleidiandroidxCredential Manager.
Dostęp do zajęć Firebase.Auth.FirebaseAuth
Klasa FirebaseAuth jest bramą dla wszystkich wywołań interfejsu API.
Można go uzyskać za pomocą FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Uwierzytelnianie za pomocą Firebase
Skonfiguruj
GoogleSignInManagerw scenie:- Utwórz pusty obiekt
GameObjectw scenie początkowej o nazwieGoogleSignInManager. - Dołącz do niego skrypt
GoogleSignInManager.cs. - Przeciągnij zasób
GoogleSignInNativeSettings(znajdujący się wAssets/GoogleSignInNative/Resources) do pola Sign In Settings (Ustawienia logowania) w skrypcie.
- Utwórz pusty obiekt
Uruchom Logowanie przez Google i wymień token identyfikacji na dane logowania Firebase:
Utwórz skrypt kontrolera, który subskrybuje
GoogleSignInManager.OnSignInCompletediGoogleSignInManager.OnSignInFailed, aktywuje logowanie za pomocąGoogleSignInManager.Instance.StartSignIn()i wymienia wynikowy token identyfikatora Google na dane logowania Firebase za pomocąGoogleAuthProvider.GetCredential:using Firebase.Auth; using Firebase.Extensions; using UnityEngine; public class MyAuthController : MonoBehaviour { private FirebaseAuth auth; private void Awake() { auth = FirebaseAuth.DefaultInstance; } private void OnEnable() { GoogleSignInManager.OnSignInCompleted += HandleSignInSuccess; GoogleSignInManager.OnSignInFailed += HandleSignInFailure; } private void OnDisable() { GoogleSignInManager.OnSignInCompleted -= HandleSignInSuccess; GoogleSignInManager.OnSignInFailed -= HandleSignInFailure; } public void OnSignInButtonClick() { GoogleSignInManager.Instance.StartSignIn(); } private void HandleSignInSuccess(string idToken) { Debug.Log("[Auth] Google Sign-In succeeded. Authenticating with Firebase..."); Credential credential = GoogleAuthProvider.GetCredential(idToken, null); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWithOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); }); } private void HandleSignInFailure(string error) { Debug.LogError($"[Auth] Google Sign-In failed: {error}"); } }
Tworzenie aplikacji
Android
- Upewnij się, że nazwa pakietu w ustawieniach odtwarzacza dokładnie odpowiada danym logowania OAuth Firebase i Google Cloud.
- Upewnij się, że minimalny poziom API jest ustawiony na 34 lub wyższy.
- Kliknij Build and Run (Skompiluj i uruchom).
iOS
- Skompiluj projekt w Unity, aby wygenerować projekt Xcode, a następnie otwórz wygenerowany plik
.xcworkspace. - W Xcode otwórz kartę Signing & Capabilities (Podpisywanie i funkcje) i wybierz Development Team (Zespół programistów).
- Wtyczka automatycznie dodaje niestandardowy schemat URI adresu URL (
REVERSED_CLIENT_ID) do projektu Xcode. Skompiluj i uruchom na urządzeniu fizycznym.
Dalsze 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 o dostawcy uwierzytelniania, których użytkownik użył do zalogowania się. To nowe konto jest przechowywane w projekcie w Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w projekcie, niezależnie od tego, jak się loguje.
-
W 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 Firebase Realtime Database i Cloud Storage regułach zabezpieczeń możesz pobrać unikalny identyfikator zalogowanego użytkownika ze zmiennej
authi 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 wielu dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj
SignOut():
auth.SignOut();