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:
- 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.
- 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:
- 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); });
- 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();