Puedes usar Firebase Authentication para permitir que los usuarios accedan a tu app con uno o más métodos de acceso, incluidos el acceso con dirección de correo electrónico y contraseña, y proveedores de identidad federada, como el Acceso con Google y el Acceso con Facebook. Este instructivo te muestra cómo agregar un acceso con dirección de correo electrónico y contraseña a la app para comenzar con Firebase Authentication.
Antes de comenzar
Antes de poder usar Firebase Authentication, tendrás que hacer lo siguiente:
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 (específicamente,
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).
Registra usuarios nuevos
Crea un formulario que permita a los usuarios nuevos registrarse en tu juego mediante su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valida la dirección de correo electrónico y la contraseña que proporcionó el usuario para después pasarlos 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);
});
Acceso de usuarios existentes
Crea un formulario que permita a los usuarios existentes acceder con su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, llama 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);
});
Configura un controlador de evento de cambio de estado de autenticación y obtén datos del usuario
Para responder a eventos de acceso y cierre de sesión, vincula un controlador de evento al objeto de autenticación global. Se llamará a este controlador cada vez que cambie el estado de acceso del usuario. Debido a que el controlador se ejecuta solo después de que el objeto de autenticación se inicializa completamente y después de que se completan todas las llamadas de la red, es el mejor lugar para obtener información acerca del usuario que accedió.
Registra el controlador de eventos mediante el campo FirebaseAuth
del objeto StateChanged
. Cuando un usuario acceda correctamente, podrás obtener información acerca de él
en el controlador de eventos.
Por último, cuando se llame a este objeto Destroy
, llamará automáticamente a
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
Obtén información para admitir otros proveedores de identidad y cuentas de invitado anónimas en los siguientes vínculos: