Puoi consentire ai tuoi utenti di autenticarsi con Firebase utilizzando i loro Account Google integrando Accedi con Google nella tua app.
Prima di iniziare
Configura il progetto Unity
Per poter usare Firebase Authentication, devi:
Registra il tuo progetto Unity e configuralo in modo che utilizzi Firebase.
Se il tuo progetto Unity utilizza già Firebase, è già registrato e configurato per Firebase.
Se non hai un progetto Unity, puoi scaricare un'app di esempio.
Aggiungi l'SDK Firebase Unity (nello specifico,
FirebaseAuth.unitypackage) al tuo progetto Unity.
Tieni presente che l'aggiunta di Firebase al tuo progetto Unity prevede attività sia nella console Firebase sia nel progetto Unity aperto (ad esempio, scarichi i file di configurazione di Firebase dalla console e poi li sposti nel progetto Unity).
Configura il progetto Firebase e le credenziali
Android: specifica l'impronta SHA-1 della tua app nella console Firebase:
- Nella console Firebase, vai a
Impostazioni > scheda Generali. Vai alla scheda Le tue app, seleziona la tua app per Android e aggiungi la fingerprint SHA-1 nel campo Fingerprint del certificato SHA.
Puoi recuperare l'impronta SHA-1 del tuo keystore utilizzando
keytool:keytool -keystore path-to-keystore.keystore -list -vPer maggiori dettagli su come ottenere l'impronta SHA della tua app, consulta Autenticazione del client.
- Nella console Firebase, vai a
Attiva Accedi con Google e copia l'ID client web:
- Nella console Firebase, vai a Sicurezza > Autenticazione.
- Nella scheda Metodo di accesso, attiva il provider di accesso Google.
- Espandi la sezione Configurazione SDK web e copia l'ID client web (ad esempio
123456-abc.apps.googleusercontent.com). Rappresenta la richiesta di pubblico (aud) dei token ID ed è obbligatoria sia per Android che per iOS. - Fai clic su Salva.
Aggiorna i file di configurazione di Firebase e copia l'ID client invertito di iOS:
- Scarica i file di configurazione di Firebase più recenti dalla console Firebase (
per Android egoogle-services.json per iOS) e sostituisci le copie precedenti nel tuo progetto Unity. (Consulta Aggiungi Firebase al tuo progetto Unity.)GoogleService-Info.plist - iOS: apri il file
e copia il valore della chiaveGoogleService-Info.plist REVERSED_CLIENT_ID(ad esempio,com.googleusercontent.apps.12345-abc). Questo valore è necessario per configurare lo schema URL di reindirizzamento iOS.
- Scarica i file di configurazione di Firebase più recenti dalla console Firebase (
Integra il plug-in Accedi con Google nel tuo progetto Unity
Importa il plug-in:
- Se stai eseguendo l'integrazione in un progetto esistente, esegui il backup del progetto e rimuovi eventuali plug-in Accedi con Google precedenti prima di procedere.
- Scarica
GoogleSignInNative.unitypackageda GitHub e importalo nel tuo progetto Unity (Assets > Import Package > Custom Package). Assicurati che tutti i file siano selezionati e fai clic su Importa.
Configura le impostazioni del plug-in:
- Nell'editor di Unity, vai a Window > Accedi con Google Native > Settings.
- Incolla l'ID client web nel primo campo.
- Incolla l'ID client iOS invertito nel secondo campo.
- Fai clic su Save Settings (Salva impostazioni).
Risolvi le dipendenze native:
- Vai ad Assets > External Dependency Manager > Android Resolver > Force Resolve.
- Attendi il messaggio di conferma. In questo modo vengono scaricate le librerie native di
googleideandroidxGestore delle credenziali.
Accedi al corso Firebase.Auth.FirebaseAuth
La classe FirebaseAuth è il gateway per tutte le chiamate API.
È accessibile tramite FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Autenticati con Firebase
Configura
GoogleSignInManagernella scena:- Crea un
GameObjectvuoto nella scena iniziale denominatoGoogleSignInManager. - Collega lo script
GoogleSignInManager.cs. - Trascina l'asset
GoogleSignInNativeSettings(che si trova inAssets/GoogleSignInNative/Resources) nello slot Sign In Settings (Impostazioni di accesso) dello script.
- Crea un
Attiva Accedi con Google e scambia il token ID con una credenziale Firebase:
Crea uno script del controller che si iscriva a
GoogleSignInManager.OnSignInCompletedeGoogleSignInManager.OnSignInFailed, attivi l'accesso conGoogleSignInManager.Instance.StartSignIn()e scambi il token ID Google risultante con una credenziale Firebase utilizzandoGoogleAuthProvider.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}"); } }
Crea la tua app
Android
- Assicurati che il nome del pacchetto in Impostazioni player corrisponda esattamente alle tue credenziali OAuth di Firebase e Google Cloud.
- Assicurati che il livello API minimo sia impostato su 34 o su un valore superiore.
- Fai clic su Build and Run (Crea ed esegui).
iOS
- Crea il tuo progetto in Unity per generare un progetto Xcode, quindi apri il file
.xcworkspacegenerato. - In Xcode, vai alla scheda Signing & Capabilities (Firma e funzionalità) e seleziona il tuo Development Team (Team di sviluppo).
- Il plug-in aggiunge automaticamente lo schema URL personalizzato (
REVERSED_CLIENT_ID) al tuo progetto Xcode. Crea ed esegui su un dispositivo fisico.
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e collegato alle credenziali, ovvero nome utente e password, numero di telefono o informazioni del provider di autenticazione, con cui l'utente ha eseguito l'accesso. Questo nuovo account viene archiviato come parte del tuo progetto Firebase e può essere utilizzato per identificare un utente in ogni app del progetto, indipendentemente dalla modalità di accesso dell'utente.
-
Nelle tue app, puoi ottenere le informazioni di base del profilo dell'utente dall'oggetto
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; }
Nelle regole di sicurezza di Firebase Realtime Database e Cloud Storage, puoi ottenere l'ID utente univoco dell'utente che ha eseguito l'accesso dalla variabile
authe utilizzarlo per controllare i dati a cui un utente può accedere.
Puoi consentire agli utenti di accedere alla tua app utilizzando più provider di autenticazione collegando le credenziali del provider di autenticazione a un account utente esistente.
Per disconnettere un utente, chiama
SignOut():
auth.SignOut();