Premiers pas avec Firebase Authentication dans Unity

Vous pouvez utiliser Firebase Authentication pour autoriser les utilisateurs à se connecter à votre jeu avec un ou d'autres méthodes de connexion, y compris la connexion par adresse e-mail et par mot de passe, et d'identité fédérée tels que Google Sign-In et Facebook Login. Ce ce tutoriel vous montre comment ajouter Firebase Authentication votre adresse e-mail et votre mot de passe pour vous connecter à 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 application exemple.

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

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

Inscrire de nouveaux utilisateurs

Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre jeu à l'aide de leur adresse e-mail une adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, valider l'e-mail et le mot de passe fournis par l'utilisateur, puis les transmettre au 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 les utilisateurs existants

Créer un formulaire permettant aux utilisateurs existants de se connecter à l'aide de leur adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la méthode 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 changement d'é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 au d'authentification unique. Ce gestionnaire est appelé dès que la connexion de l'utilisateur les changements d'état. Comme le gestionnaire ne s'exécute qu'une fois que l'objet d'authentification est entièrement initialisé. Une fois les appels réseau effectués, il est préférable 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 sur cet utilisateur dans le gestionnaire d'événements.

Enfin, lorsque Destroy est appelé pour cet objet, il appelle automatiquement OnDestroy 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é avec d'autres fournisseurs d'identité et des comptes invités anonymes :