Firebase : Información del usuario

publicado en la categoría Firebase
Cuando se usa Firebase, siempre hay que tener presente que jamás podremos acceder a información relevante ni modificar datos sensibles ya que estos permanecerán accesibles únicamente para el usuario que deberá autorizarlos a través de la cuenta original con la que se haya registrado.

Cuando el usuario se autentifica con cualquiera de los métodos provistos por Firebase, se nos devuelve un array con la información a la que podemos acceder.

firebase.auth().onAuthStateChanged(function(user){
	if(user){
		// esta registrado
	} else {
		// no esta registrado
	}
});

En ese ejemplo básico podemos consultar user para acceder a esa información:

user.displayName será null o un string con el nombre del usuario
user.email será null o o un string con su dirección de email
user.photoURL será null o un string con la imagen de su perfil
user.providerId será un string con el nombre del proveedor (facebook.com, google.com, twitter.com, etc)
user.uid será un string con el identificador único de ese usuario

Algunos otros datos suelen ser irrelevantes:

user.emailVerified será true si el email fue verificado o false si no lo fue
user.isAnonymousserá true si es un usuario anónimo o false si no lo es

También podemos leer los datos usando user.providerData que será otro array conteniendo displayName, email, photoURL, providerId y uid.

En cualquier momento podemos acceder a los datos del usuario actual usando auth().currentUser.

Así como podemos leer los datos del usuario, también podemos modificarlos con updateProfile; esto es útil cuando alguno de ellos es nulo (no hay un nombre o una imagen). En ese caso, podemos agregarlo pero esto no modificará en absoluto la cuenta original con la que se haya autentificado.

var user = firebase.auth().currentUser;
user.updateProfile({
	displayName: nombre_usuario,
	photoURL: url_imagen
}).then(function(){
	alert('OK : PERFIL ACTUALIZADO');
}, function(error) {
	alert('ERROR en updateProfile');
});

No es necesario actualizar ambos datos, podemos cambiar sólo uno y el otro permanecerá tal como estaba:

user.updateProfile({
	photoURL: url_imagen
}).then(function(){
	alert('OK : IMAGEN PERFIL ACTUALIZADA');
}, function(error) {
	alert('ERROR en updateProfile');
});

Existen funciones extras con las cuales pueden cambiarse datos más relevantes pero tienen restricciones de seguridad y deben usarse con mucho cuidado; por ejemplo, cambiar la contraseña o la dirección de email requieren que el usuario vuelva a autentificarse y confirmación. Aunque utilicemos esas funciones en nuestro sitio, son tareas que hará Firebase de modo seguro sin que podamos intervenir; de ese modo, se impide que alguien acceda a las cuentas que se utilizaron para autentificarse.

Lo mismo ocurre con funciones como delete que eliminará el registro del usuario; siempre se pedirá que el usuario vuelva a autentificarse antes de hacerlo, excepto en el caso de usuarios anónimos.