Autenticación de nombre de usuario en lugar de correo electrónico

Con Firebase, puedo registrarme e iniciar sesión con usuarios de direcciones de correo electrónico. Sin embargo, qué sucede si quiero que la aplicación se base en el nombre de usuario. Por ejemplo, ¿iniciaría sesión con “Bobzilla” en lugar de “Bob@mail.com”?

¿Es esto posible con Firebase?

Simple: puede agregar cualquier dominio detrás del nombre de usuario. Una vez que haya determinado el nombre de usuario, registre a su usuario con @vikzillasapp.com .

Tenga en cuenta que esto imposibilitará que el usuario restablezca su contraseña si la olvida, ya que Firebase utiliza la dirección de correo electrónico para enviar el correo electrónico de restablecimiento de la contraseña.

Si esto no se adapta a sus necesidades, puede pasar su propio proveedor de identidades usando las instrucciones en la documentación de Firebase . Esto requiere un código que se ejecute en un entorno confiable, para lo cual puede usar su propio servidor o Cloud Functions for Firebase . Ahora incluso hay un ejemplo de esto en las funciones: repository de muestras .

En lugar de utilizar un método donde asigne una dirección de correo electrónico para el usuario, podría ser una mejor opción buscar una dirección de correo electrónico en su base de datos.

Un ejemplo sería:

  1. Solicitar el nombre de usuario para iniciar sesión con nombre de usuario y contraseña
  2. Verifique que el nombre de usuario exista en su base de datos y recupere la dirección de correo electrónico correspondiente para esa cuenta
  3. Pase esta dirección de correo electrónico al proceso de inicio de sesión sin problemas

Puede usar la autenticación personalizada de firebase . La autenticación personalizada es un método que el usuario puede iniciar sesión en la aplicación utilizando un token personalizado.

Sin embargo, necesita un código de backend para crear un token personalizado cuando el usuario envía el nombre de usuario y la contraseña a ese back-end.

Afortunadamente, ahora existe la función de nube de firebase, con evento http, que puede resolver su problema fácilmente. El paso es:

  1. El usuario envía el nombre de usuario y la contraseña a la URL de la función en la nube a través de los parámetros de consulta (GET) o el cuerpo de la solicitud (POST)

  2. La función de nube verificará si el nombre de usuario y la contraseña son válidos (por ejemplo, desde la base de datos en tiempo real)

  3. Si el nombre de usuario y la contraseña son válidos, la función en la nube creará un token personalizado utilizando userId (debe guardar el ID del usuario). Y luego enviarlo al cuerpo de respuesta

  4. El cliente entonces puede iniciar sesión usando ese personalizadoToken