Autentica con Firebase mediante cuentas basadas en contrase�as con Unity

Puedes usar Firebase�Authentication para permitir que los usuarios se autentiquen en Firebase con su direcci�n de correo electr�nico y contrase�a, y para administrar las cuentas con contrase�a de tu app.

Antes de comenzar

Para poder usar Firebase�Authentication, debes realizar los siguientes pasos:

  • Registra tu proyecto de Unity y config�ralo para usar Firebase.

    • Si tu proyecto de Unity ya usa Firebase, significa que ya est� registrado y configurado para Firebase.

    • Si a�n no tienes un proyecto de Unity, puedes descargar una app de ejemplo.

  • Agrega el SDK�de�Firebase�Unity (en espec�fico, FirebaseAuth.unitypackage) a tu proyecto de Unity.

Ten en cuenta que agregar Firebase a tu proyecto de Unity implica realizar tareas en Firebase�console y en tu proyecto abierto de Unity (por ejemplo, descargar archivos de configuraci�n de Firebase desde la consola y moverlos a tu proyecto de Unity).

Accede a la clase�Firebase.Auth.FirebaseAuth

La clase FirebaseAuth es la puerta de enlace para todas las llamadas a la API. Se puede acceder a ella a trav�s de FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Crea una cuenta con contrase�a

Para crear una cuenta de usuario nueva con una contrase�a, sigue estos pasos en el c�digo de acceso de la app:

  1. Cuando un usuario nuevo se registre mediante el formulario de registro de la app, realiza los pasos de validaci�n de la cuenta nueva necesarios, como verificar que se haya escrito correctamente la contrase�a y que cumpla con los requisitos de complejidad.
  2. Para crear una cuenta nueva, pasa la direcci�n de correo electr�nico y la contrase�a del usuario nuevo a FirebaseAuth.CreateUserWithEmailAndPassword:
    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);
    });
    

Permite que un usuario acceda con una direcci�n de correo electr�nico y una contrase�a

Los pasos para que un usuario acceda con una contrase�a son similares a los pasos para crear una cuenta nueva. En la funci�n de acceso de tu app, haz lo siguiente:

  1. Cuando un usuario acceda a tu app, pasa la direcci�n de correo electr�nico y la contrase�a a FirebaseAuth.SignInWithEmailAndPassword:
    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);
    });
    
  2. Tambi�n puedes crear la credencial y acceder como en los otros flujos de trabajo:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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);
    });
    

Recomendado: Habilita la protecci�n de enumeraci�n de correo electr�nico

Algunos m�todos de Firebase Authentication que toman direcciones de correo electr�nico como par�metros producen errores espec�ficos si la direcci�n de correo electr�nico no est� registrada cuando debe estarlo (por ejemplo, cuando se accede con una direcci�n de correo electr�nico y una contrase�a) o si est� registrada cuando no debe estar en uso (por ejemplo, cuando se cambia la direcci�n de correo electr�nico de un usuario). Si bien esto puede ser �til para sugerir soluciones espec�ficas a los usuarios, tambi�n puede usarse de forma inadecuada por actores maliciosos que quieren descubrir las direcciones de correo electr�nico registradas por tus usuarios.

Para mitigar este riesgo, te recomendamos habilitar la protecci�n de enumeraci�n de correo electr�nico para tu proyecto con la herramienta gcloud de Google Cloud. Ten en cuenta que habilitar esta funci�n cambia el comportamiento de los informes de errores de Firebase Authentication, as� que aseg�rate de que tu app no dependa de los errores m�s espec�ficos.

Pr�ximos pasos

Cuando un usuario accede por primera vez, se crea una cuenta de usuario nueva y se la vincula con las credenciales (el nombre de usuario y la contrase�a, el n�mero de tel�fono o la informaci�n del proveedor de autenticaci�n) que el usuario utiliz� para acceder. Esta cuenta nueva se almacena como parte de tu proyecto de Firebase y se puede usar para identificar a un usuario en todas las apps del proyecto, sin importar c�mo acceda.

  • En tus apps, puedes obtener la informaci�n b�sica de perfil del usuario a partir del objeto�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;
    }
    
  • En tus reglas de seguridad de Firebase�Realtime�Database y Cloud�Storage, puedes obtener el ID del usuario �nico que accedi� a partir de la variable�auth y usarlo para controlar a qu� datos podr� acceder.

Para permitir que los usuarios accedan a la app con varios proveedores de autenticaci�n, puedes vincular las credenciales de estos proveedores con una cuenta de usuario existente.

Para salir de la sesi�n de un usuario, llama a SignOut() de la siguiente manera:

auth.SignOut();