Puoi integrare Firebase Authentication con un sistema di autenticazione personalizzato Modificando il server di autenticazione per produrre token firmati personalizzati quando esegue l'accesso. La tua app riceve questo token e lo utilizza per l'autenticazione con Firebase.
Prima di iniziare
-
Prima di poter utilizzare Firebase Authentication, devi:
- Registra il tuo progetto Unity con il tuo progetto Firebase.
- Aggiungi l'SDK Firebase Unity (nello specifico,
FirebaseAuth.unitypackage
) al tuo progetto Unity.
Puoi trovare istruzioni dettagliate per i passaggi di configurazione iniziali in Aggiungi Firebase al tuo account Unity progetto.
- Recupera le chiavi del server del tuo progetto:
- Vai alla pagina Account di servizio. nelle impostazioni del progetto.
- Fai clic su Genera nuova chiave privata nella parte inferiore della sezione SDK Firebase Admin della pagina Account di servizio.
- La coppia di chiavi pubblica/privata del nuovo account di servizio viene automaticamente salvate sul computer. Copia questo file nel server di autenticazione.
Autenticazione con Firebase
La classeFirebaseAuth
è il gateway per tutte le chiamate API.
È accessibile tramite FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Chiama Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
con il token del
tuo server di autenticazione.
- Quando gli utenti accedono alla tua app, invia le loro credenziali di accesso (ad esempio nome utente e password) al tuo server di autenticazione. Il server controlla le credenziali e restituisce un token personalizzato se sono valide.
- Dopo aver ricevuto il token personalizzato dal server di autenticazione, passa
a
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
per accedere utente: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); });
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e collegati alle credenziali, ovvero nome utente, password, numero o informazioni del provider di autenticazione, ovvero l'utente con cui ha eseguito l'accesso. Questo nuovo viene archiviato come parte del progetto Firebase e può essere utilizzato per identificare a un utente in ogni app del progetto, a prescindere da come esegue l'accesso.
-
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 Firebase Realtime Database e Cloud Storage, puoi recuperare l'ID utente univoco dell'utente che ha eseguito l'accesso dalla variabile
auth
e utilizzarlo per controllare a quali dati può accedere un utente.
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();