Inizia con l'autenticazione Firebase in Unity

Puoi utilizzare l'autenticazione Firebase per consentire agli utenti di accedere al tuo gioco utilizzando uno o più metodi di accesso, tra cui l'accesso tramite indirizzo e-mail e password, e provider di identità federati come Accesso Google e Accesso Facebook. Questo tutorial ti introduce all'autenticazione Firebase mostrandoti come aggiungere l'indirizzo e-mail e l'accesso tramite password al tuo gioco.

Prima di iniziare

Prima di poter utilizzare l'autenticazione Firebase , devi:

  • Registra il tuo progetto Unity e configuralo per utilizzare Firebase.

    • Se il tuo progetto Unity utilizza già Firebase, significa che è già registrato e configurato per Firebase.

    • Se non disponi di 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 comporta attività sia nella console Firebase che nel tuo progetto Unity aperto (ad esempio, scarichi i file di configurazione Firebase dalla console, quindi li sposti nel tuo progetto Unity).

Iscrivi nuovi utenti

Crea un modulo che consenta ai nuovi utenti di registrarsi al tuo gioco utilizzando il loro indirizzo email e una password. Quando un utente completa il modulo, convalida l'indirizzo email e la password forniti dall'utente, quindi passali al metodo CreateUserWithEmailAndPasswordAsync :

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);
});

Accedi agli utenti esistenti

Crea un modulo che consenta agli utenti esistenti di accedere utilizzando il proprio indirizzo email e la password. Quando un utente completa il modulo, chiama il metodo SignInWithEmailAndPasswordAsync :

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);
});

Imposta un gestore eventi di modifica dello stato di autenticazione e ottieni i dati dell'utente

Per rispondere agli eventi di accesso e disconnessione, allegare un gestore eventi all'oggetto di autenticazione globale. Questo gestore viene chiamato ogni volta che cambia lo stato di accesso dell'utente. Poiché il gestore viene eseguito solo dopo che l'oggetto di autenticazione è stato inizializzato completamente e dopo il completamento di tutte le chiamate di rete, è il posto migliore per ottenere informazioni sull'utente che ha effettuato l'accesso.

Registra il gestore eventi utilizzando il campo StateChanged dell'oggetto FirebaseAuth . Quando un utente accede correttamente, puoi ottenere informazioni sull'utente nel gestore eventi.

Infine, quando questo oggetto viene chiamato Destroy , chiamerà automaticamente OnDestroy . Pulisci i riferimenti dell'oggetto Auth in OnDestroy .

void InitializeFirebase() {
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
        && auth.CurrentUser.IsValid();
    if (!signedIn && user != null) {
      DebugLog("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      DebugLog("Signed in " + user.UserId);
      displayName = user.DisplayName ?? "";
      emailAddress = user.Email ?? "";
      photoUrl = user.PhotoUrl ?? "";
    }
  }
}

void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

Prossimi passi

Scopri come aggiungere il supporto per altri provider di identità e account ospite anonimi: