Premiers pas avec Firebase Authentication dans Unity

Vous pouvez utiliser Firebase Authentication pour permettre aux utilisateurs de se connecter à votre jeu à l'aide d'une ou plusieurs méthodes de connexion, y compris la connexion avec une adresse e-mail et un mot de passe, et les fournisseurs d'identité fédérée tels que Google Sign-In et Facebook Login. Ce tutoriel vous aide à faire vos premiers pas avec Firebase Authentication en vous montrant comment ajouter une connexion par adresse e-mail et mot de passe à votre jeu.

Avant de commencer

Avant de pouvoir utiliser Firebase Authentication, vous devez :

  • Enregistrez votre projet Unity et configurez-le pour utiliser Firebase.

    • Si votre projet Unity utilise déjà Firebase, il est déjà enregistré et configuré pour Firebase.

    • Si vous n'avez pas de projet Unity, vous pouvez télécharger un exemple d'application.

  • Ajoutez le SDK Firebase Unity (plus précisément FirebaseAuth.unitypackage) à votre projet Unity.

Notez que l'ajout de Firebase à votre projet Unity implique des tâches à la fois dans la console Firebase et dans votre projet Unity ouvert (par exemple, vous téléchargez des fichiers de configuration Firebase depuis la console, puis vous les déplacez dans votre projet Unity).

Inscrire de nouveaux utilisateurs

Créez un formulaire qui permet aux nouveaux utilisateurs de s'inscrire à votre jeu en utilisant leur adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez l'adresse e-mail et le mot de passe qu'il a fournis, puis transmettez-les à la méthode 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);
});

Connecter des utilisateurs existants

Créez un formulaire permettant aux utilisateurs existants de se connecter avec leur adresse e-mail et leur mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la méthode 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);
});

Définir un gestionnaire d'événements de modification de l'état d'authentification et obtenir les données utilisateur

Pour répondre aux événements de connexion et de déconnexion, associez un gestionnaire d'événements à l'objet d'authentification global. Ce gestionnaire est appelé chaque fois que l'état de connexion de l'utilisateur change. Étant donné que le gestionnaire ne s'exécute qu'une fois l'objet d'authentification entièrement initialisé et une fois tous les appels réseau terminés, il s'agit du meilleur endroit pour obtenir des informations sur l'utilisateur connecté.

Enregistrez le gestionnaire d'événements à l'aide du champ StateChanged de l'objet FirebaseAuth. Lorsqu'un utilisateur se connecte, vous pouvez obtenir des informations le concernant dans le gestionnaire d'événements.

Enfin, lorsque Destroy est appelé sur cet objet, OnDestroy est automatiquement appelé. Nettoyez les références de l'objet Auth dans 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;
}

Étapes suivantes

Découvrez comment ajouter la compatibilité pour d'autres fournisseurs d'identité et les comptes invités anonymes :