Puedes usar Firebase Authentication para permitir que los usuarios inicien sesión en tu juego usando uno o más métodos de inicio de sesión, incluido el inicio de sesión con dirección de correo electrónico y contraseña, y proveedores de identidad federados, como el inicio de sesión con Google y el inicio de sesión con Facebook. Este tutorial te ayuda a comenzar con la autenticación de Firebase mostrándote cómo agregar una dirección de correo electrónico y una contraseña para iniciar sesión en tu juego.
Antes de que empieces
Antes de poder utilizar Firebase Authentication , debes:
Registre su proyecto de Unity y configúrelo para usar Firebase.
Si tu proyecto de Unity ya usa Firebase, entonces ya está registrado y configurado para Firebase.
Si no tiene un proyecto de Unity, puede descargar una aplicación de muestra .
Agregue el SDK de Firebase Unity (específicamente,
FirebaseAuth.unitypackage
) a su proyecto de Unity.
Tenga en cuenta que agregar Firebase a su proyecto de Unity implica tareas tanto en Firebase console como en su proyecto de Unity abierto (por ejemplo, descarga archivos de configuración de Firebase desde la consola y luego los mueve a su proyecto de Unity).
Registrar nuevos usuarios
Crea un formulario que permita a nuevos usuarios registrarse en tu juego utilizando su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valide la dirección de correo electrónico y la contraseña proporcionadas por el usuario, luego páselas al método 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);
});
Iniciar sesión usuarios existentes
Cree un formulario que permita a los usuarios existentes iniciar sesión con su dirección de correo electrónico y contraseña. Cuando un usuario completa el formulario, llame al método 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);
});
Establecer un controlador de eventos de cambio de estado de autenticación y obtener datos del usuario
Para responder a eventos de inicio y cierre de sesión, adjunte un controlador de eventos al objeto de autenticación global. Se llama a este controlador cada vez que cambia el estado de inicio de sesión del usuario. Debido a que el controlador se ejecuta solo después de que el objeto de autenticación se haya inicializado por completo y después de que se hayan completado todas las llamadas de red, es el mejor lugar para obtener información sobre el usuario que inició sesión.
Registre el controlador de eventos utilizando el campo StateChanged
del objeto FirebaseAuth
. Cuando un usuario inicia sesión correctamente, puede obtener información sobre el usuario en el controlador de eventos.
Finalmente, cuando se haya llamado a este objeto Destroy
, automáticamente llamará OnDestroy
. Limpia las referencias del objeto Auth en 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;
}
Próximos pasos
Aprenda cómo agregar soporte para otros proveedores de identidad y cuentas de invitados anónimos: