Administra usuarios en Firebase

Crea un usuario

Para crear un usuario nuevo en tu proyecto de Firebase, puedes llamar al método CreateUserWithEmailAndPassword o hacer que el usuario acceda por primera vez con un proveedor de identidad federada, como Acceso con Google o Acceso con Facebook.

También puedes crear nuevos usuarios autenticados con contraseña en la sección Authentication de Firebase console, en la página Usuarios.

Obtén el usuario con sesión activa

La manera recomendada de obtener el usuario actual es establecer un agente de escucha en el objeto Auth:

Firebase.Auth.FirebaseAuth auth;
Firebase.Auth.FirebaseUser user;

// Handle initialization of the necessary firebase modules:
void InitializeFirebase() {
  Debug.Log("Setting up Firebase Auth");
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

// Track state changes of the auth object.
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
    if (!signedIn && user != null) {
      Debug.Log("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      Debug.Log("Signed in " + user.UserId);
    }
  }
}

void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

Cuando usas un agente de escucha, se garantiza que el objeto Auth no esté en un estado intermedio, como la inicialización, cuando obtengas el usuario actual.

También puedes llamar a CurrentUser para obtener el usuario que accedió. Si un usuario no accedió a su cuenta, CurrentUser mostrará un resultado nulo.

Obtén el perfil de un usuario

Para obtener la información de perfil de un usuario, usa los métodos de acceso de una instancia de Firebase.Auth.FirebaseUser. Por ejemplo:

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;
}

Obtén la información de perfil de un usuario de un proveedor específico

Para obtener la información de perfil recuperada de los proveedores de acceso vinculados con un usuario, usa el método ProviderData. Por ejemplo:

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;
}

Actualiza el perfil de un usuario

Para actualizar la información de perfil básica de un usuario (el nombre visible y la URL de la foto de perfil), puedes usar el método UpdateUserProfile. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  Firebase.Auth.UserProfile profile = new Firebase.Auth.UserProfile {
    DisplayName = "Jane Q. User",
    PhotoUrl = new System.Uri("https://example.com/jane-q-user/profile.jpg"),
  };
  user.UpdateUserProfileAsync(profile).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdateUserProfileAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdateUserProfileAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User profile updated successfully.");
  });
}

Configura la dirección de correo electrónico de un usuario

Puedes configurar la dirección de correo electrónico de un usuario con el método UpdateEmail. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.UpdateEmailAsync("user@example.com").ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdateEmailAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdateEmailAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User email updated successfully.");
  });
}

Envía un mensaje de verificación a un usuario

Para enviar un mensaje de verificación de dirección a un usuario, puedes usar el método SendEmailVerification. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.SendEmailVerificationAsync().ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("SendEmailVerificationAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("SendEmailVerificationAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Email sent successfully.");
  });
}

Puedes personalizar la plantilla de correo electrónico que se usa en la sección Autenticación de Firebase console, en la página Plantillas de correo electrónico. Consulta Plantillas de correo electrónico en el Centro de ayuda de Firebase.

Configura la contraseña de un usuario

Para configurar la contraseña de un usuario, puedes usar el método UpdatePassword. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
string newPassword = "SOME-SECURE-PASSWORD";
if (user != null) {
  user.UpdatePasswordAsync(newPassword).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("UpdatePasswordAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("UpdatePasswordAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Password updated successfully.");
  });
}

Envía un correo electrónico de restablecimiento de la contraseña

Para enviar un correo electrónico de restablecimiento de contraseña a un usuario, puedes usar el método SendPasswordResetEmail. Por ejemplo:

string emailAddress = "user@example.com";
if (user != null) {
  auth.SendPasswordResetEmailAsync(emailAddress).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("SendPasswordResetEmailAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("SendPasswordResetEmailAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("Password reset email sent successfully.");
  });
}

Puedes personalizar la plantilla de correo electrónico que se usa en la sección Autenticación de Firebase console, en la página Plantillas de correo electrónico. Consulta Plantillas de correo electrónico en el Centro de ayuda de Firebase.

También puedes enviar correos electrónicos de restablecimiento de contraseña desde Firebase console.

Borra un usuario

Para borrar una cuenta de usuario, puedes usar el método Delete. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  user.DeleteAsync().ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("DeleteAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("DeleteAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User deleted successfully.");
  });
}

También puedes borrar usuarios en la sección Autenticación de Firebase console, en la página Usuarios.

Vuelve a autenticar un usuario

Por motivos de seguridad, algunas acciones, como borrar una cuenta, configurar una dirección de correo electrónico principal y cambiar una contraseña, no pueden realizarse si el usuario no accedió recientemente. Si transcurrió demasiado tiempo desde que el usuario accedió a su cuenta, cualquier intento de realizar estas acciones fallará.

Cuando esto sucede, es necesario obtener nuevas credenciales de acceso del usuario y pasarlas a Reauthenticate para volver a autenticar la sesión. Por ejemplo:

Firebase.Auth.FirebaseUser user = auth.CurrentUser;

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
Firebase.Auth.Credential credential =
    Firebase.Auth.EmailAuthProvider.GetCredential("user@example.com", "password1234");

if (user != null) {
  user.ReauthenticateAsync(credential).ContinueWith(task => {
    if (task.IsCanceled) {
      Debug.LogError("ReauthenticateAsync was canceled.");
      return;
    }
    if (task.IsFaulted) {
      Debug.LogError("ReauthenticateAsync encountered an error: " + task.Exception);
      return;
    }

    Debug.Log("User reauthenticated successfully.");
  });
}

Importa cuentas de usuario

Para importar cuentas de usuario al proyecto de Firebase desde un archivo, puedes usar el comando auth:import de Firebase CLI. Por ejemplo:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.