Beruflich Dokumente
Kultur Dokumente
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 1 de 78
Manual de Firebase
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 2 de 78
Manual de Firebase
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 3 de 78
Manual de Firebase
Introduccin a Firebase
Servicio capaz de proveernos de un Backend en la nube con una fuente de datos en tiempo real y
libreras para acceder a ella desde aplicaciones web, iOS y Android.
Firebase es un claro ejemplo de las posibilidades de desarrollo en la nube. A partir de un servicio web nos
ofrecen la posibilidad de programar aplicaciones con datos que se sincronizan en tiempo real a travs de
mltiples dispositivos, evitando muchas de las tareas engorrosas en las que tendramos que dedicar tiempo
al programar.
Para que nos entendamos, es bsicamente una base de datos remota, alojada en la nube y capaz de ser
accedida desde navegadores y apps para dispositivos, que tiene como principal caracterstica que responde
en tiempo real a los cambios realizados en los datos. En la prctica, mediante Firebase podemos escribir
datos en una base de datos y que stos datos se comuniquen a todos los clientes conectados a es misma
fuente de datos.
ACTUALIZACIN: Este artculo se refiere a la versin anterior de Firebase. Muchas de las cosas que se mencionan han
cambiado en mayo de 2016, puesto que han renovado el servicio de manera considerable, agregando nuevas y asombrosas
funcionalidades para facilitar el desarrollo de aplicaciones sin necesidad de programar el backend. Todo esto lo explicamos en el
artculo sobre las nuevas caractersticas de Firebase.
Si accedes a la pgina de inicio de firebase vers una animacin de lo que sera una aplicacin en tiempo real.
En ella cualquier actualizacin enviada a travs de la web o un mvil se traslada a cualquier otro navegador
o dispositivo que est accediendo a la aplicacin. Lo bueno es que esa comunicacin se realiza de manera
interna en Firebase sin que el programador tenga que intervenir para nada.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 4 de 78
Manual de Firebase
Firebase cuenta con una serie de libreras mediante las cuales podemos conectarnos y mantenernos suscritos
a los cambios de los datos, compatibles con los sistemas ms comunes como son iOS, Android y Web, pero
tambin a varios lenguajes de programacin del lado del servidor como podran ser Python o PHP.
El otro servicio que Firebase nos ofrece principalmente es el de la autenticacin, de modo que podremos
realizar login en el sistema y crear aplicaciones multiusuario sin tener que programar toda la parte de la
autenticacin. Permite login con usuario y clave, as como con distintos conectores sociales como
Facebook, Twitter, Google, etc.
Con todo, Firebase nos ofrece la posibilidad de realizar aplicaciones de funcionalidades avanzadas
programando solamente la parte del lado del cliente. En otras palabras, nos permite programar una
aplicacin centrndonos nicamente en la parte del frontend, dejando el backend gestionado por completo
con Firebase.
Una vez creada nuestra aplicacin podemos administrarla desde un panel de control que nos ofrece las
opciones que resumimos a continuacin:
Data: nos ofrece el acceso para visualizar y editar nuestro modelo de datos. Bsicamente lo que
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 5 de 78
Manual de Firebase
Vers en seguida un formulario para asignar un nuevo juego de datos en tu aplicacin. Aqu debemos
rellenar los pares clave/valor que necesitemos introducir dentro del modelo de esta aplicacin. De
momento simplemente vamos a escribir una clave y un valor, pulsando luego el botn "Add".
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 6 de 78
Manual de Firebase
Ahora tenemos un primer dato en nuestra aplicacin. Es simplemente una propiedad con un valor pero ser
suficiente para este ejemplo.
Una vez descargadas las dependencias, vers el archivo firebase.js dentro de bower_components/firebase.
Nota: Seguramente ests familiarizado con esta operativa de gestin de dependencias, pero si no es as
accede al artculo de Bower.
Ahora en la pgina .html que quieras usar Firebase debes colocar el script firebase.js en la cabecera. Eso nos
permitir usar el API de Firebase.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 7 de 78
Manual de Firebase
<script src="bower_components/firebase/firebase.js"></script>
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 8 de 78
Manual de Firebase
console.log(snapshot.val());
document.getElementById("titular").textContent = snapshot.val();
});
El mtodo on() me permite suscribirme indicando el nombre del evento que me interesa, en este caso
"value" y la funcin que queremos registrar como manejadora del evento. En esa funcin recibiremos el
"snapshot" que es una instantnea del dato que tenemos en Firebase. Cuando cambie se disparar de nuevo
el mtodo recibiendo la siguiente instantnea.
Para acceder al valor de la instantnea usamos el mtodo val().
En este caso dentro del manejador de evento mostramos el valor por console.log() y luego usamos ese
mismo valor para cargarlo como contenido en un elemento del DOM que tiene el id "titular".
Una vez abierto en el navegador, desde el sistema de "Admin" de tu app Firebase en la seccin "Data",
simplemente cambia el dato que hay en el campo "appName" que habamos creado al principio. El cambio
debera trasladarse casi al instante hacia todos los navegadores que tuvieses visualizando en esa pgina. Si no
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 9 de 78
Manual de Firebase
es as revisa los pasos anteriores y consulta el vdeo que encontrars un poco ms abajo.
Nota: Firebase tambin responde a las operaciones por medio de una interfaz "REST", como cualquier API
REST que puedas conocer. De hecho las conexiones mediante REST son las que utilizars desde lenguajes
de servidor como PHP o Python. Sin embargo, las comunicaciones por sockets son mucho ms rpidas
debido a que no tienen que hacer toda la operativa de una request al servidor con HTTP, con todas las
etapas del protocolo. El canal de comunicacin permanece abierto y los datos fluyen de un lado a otro sin
ms. Adems los sockets permiten una comunicacin que ahorra llamadas en aplicaciones al servidor en
tiempo real, porque el cliente no tiene necesidad de hacer constantes request para recuperar los datos que
hayan cambiado, sino que simplemente tiene que escuchar el socket, a la espera que Firebase le mande los
cambios cuando se estn produciendo.
Firebase 3
Novedades y primeros pasos en la nueva versin de Firebase, que nos trae una importante
cantidad de nuevos servicios para desarrollo de aplicaciones web, iOS y Android sin tener que
desarrollar la parte backend.
Durante las ltimas semanas venimos realizando diferentes vdeos sobre Firebase aqu en
DesarrolloWeb.com, en los que hemos podido conocer muchas de sus caractersticas. A lo largo del Manual
de Firebase encontrars muchos tips interesantes y descripciones de uso de su API.
Pero en esta ocasin nos hemos visto obligados a volver un poco hacia atrs, porque se ha presentado en
mayo de 2016 una gran revisin al sistema por la cual se ha ampliado considerablemente la cantidad de
cosas que seremos capaces de hacer desde aplicaciones Firebase.
Hasta ahora Firebase contaba con tres principales servicios:
Base de datos en tiempo real
Sistema de autenticacin
Hosting de archivos estticos
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 10 de 78
Manual de Firebase
Y ahora se ha transformado en una completa suite de caractersticas y utilidades realmente impactante que s
resuelve la mayora de las necesidades que los desarrolladores tienen al crear las aplicaciones. Es una
tremenda actualizacin, de mucho inters, porque la mayora de las cosas que ahora se ofrecen venan
siendo demandadas por los desarrolladores durante los ltimos meses o aos.
Pgina 11 de 78
Manual de Firebase
Nueva consola: Ahora existe una consola totalmente renovada para la gestin de una app Firebase, a la
que le han agregado diversas nuevas utilidades para cubrir la configuracin de muchos nuevos servicios.
Sustituye al antiguo "dashboard" de Firebase y accedes desde el sitio web de Firebase.
Para crear una nueva aplicacin encontrars un botn bien visible.
En la ventana que aparece escribimos los datos de nuestro nuevo proyecto y al crearlo nos lleva
directamente a la administracin de esta nueva app.
Desde all encontraremos muchas nuevas opciones, acceso a la documentacin etc.
Aadir un proyecto a una aplicacin web: En la consola de administracin de una app encontramos
varios enlaces visibles fcilmente para poder aadir Firebase a una app Andorid, iOS o Web. Si pulsamos en
la parte web conseguimos los datos de nuestra app, en un script Javascript que podrs agregar a tu pgina.
El acceso a estos datos se hace con este icono:
En la caja de dilogo que veremos tenemos que copiar el cdigo de inicializacin de la app Firebase. Ese
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 12 de 78
Manual de Firebase
cdigo debemos pegarlo en nuestro proyecto, justo antes de realizar cualquier tipo de operacin con
Firebase.
Una vez inicializada la aplicacin con este script seremos capaces de acceder al nuevo API de Firebase para
realizar las operaciones que sean necesarias para el desarrollo de nuestra app.
As estamos "cacheando" en una variable llamada "db" el service del acceso a la base de datos Firebase.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 13 de 78
Manual de Firebase
Luego, con este servicio podremos acceder al API de Firebase, en este caso para todo lo que respecta al
"realtime database", para hacer operaciones de lectura / escritura sobre la base de datos. Aqu ya cambia
poco sobre lo que se ha explicado en anteriores artculos.
Una operacin de escritura se puede realizar mediante el mtodo set(), pero antes tenemos que decir en qu
referencia de la base de datos queremos escribir.
db.ref('metadata').set({
app: 'videotutorial',
ver: '0.0.1'
});
Nota: Puedes encontrar mayores explicaciones en el artculo Escribir datos en Firebase. Es un artculo
en el que estamos usando el API antigua, pero te explica varios conceptos que son exactamente iguales
en esta versin de Firebase, junto con la descripcin y caractersticas del mtodo set() y otros que
tambin podemos usar para escribir en nuestra base de datos en tiempo real.
Lo que respecta a una lectura, se sigue realizando por medio de eventos, en este caso "value". Ese evento se
ejecutar en el primer acceso a la informacin y posteriormente cada vez que esa informacin cambie, para
ser notificados en tiempo real.
db.ref("metadata").on('value', function(snapshot){
console.log(snapshot.val());
});
Si ya conocas Firebase no tendrs problemas en entender este cdigo anterior. Si no lo conoces cabe decir
que la funcin manejadora del evento "value" recibe un "snapshot" que no es ms que la instantnea de un
dato en un momento dado. El dato que vamos a recibir est en la referencia "metadata". Recibimos el valor
del dato en el snapshot invocando al mtodo val(): snapshot.val().
Nota: Puedes acceder al artculo sobre el trabajo con colecciones de Firebase donde explicamos el
motivo del acceso para lectura a la base de datos de Firebase por medio de eventos. Nuevamente vers
que se usa el API antigua, pero las cosas siguen siendo bastante parecidas, excepto por lo que se est
mencionando en el presente texto.
Pgina 14 de 78
Manual de Firebase
Conclusin
En siguientes artculos seguiremos explicando Firebase y los distintos servicios que ahora incluye.
Continuaremos el Manual de Firebase ya con las nuevas caractersticas y modos de uso de este excelente
servicio BaaS (Backend as a Service).
Nos agrada especialmente, porque vemos que el sistema Backend as a Service de Firebase representa una
seria apuesta de Google por la computacin en la nube y muestra que est de muy buena salud.
Esto es una excelente noticia para los desarrolladores tambin, porque ahora con Firebase sern capaces de
hacer muchas ms cosas sin tener que invertir tiempo en la programacin de la parte del backend.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 15 de 78
Manual de Firebase
Instalar Firebase 3
Esta parte ya la hemos comentado en el artculo de introduccin a Firebase 3, por lo que no repetiremos el
asunto, ya que se trata simplemente de copiar y pegar un snippet que tienes en la consola de tu app Firebase.
Solo como alternativa decir que puedes usar Bower, u otros gestores de paquetes, para alojar el script de
Firebase en tu proyecto.
bower install --save firebase
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 16 de 78
Manual de Firebase
Luego colocaremos el script de Firebase en nuestra pgina, de la descarga realizada con Bower:
<script src="bower_components/firebase/firebase.js"></script>
A partir de este servicio tendr todas las funcionalidades que me permite el API de Firebase para el acceso a
la base de datos en tiempo real.
Ahora se trata de obtener una referencia al lugar donde deseamos escribir datos.
var referencia = databaseService.ref('testRef');
Para escribir datos con Firebase usas los mtodos set() o update() sobre una referencia. As escribes
justamente dentro de esa referencia aquella informacin que quieres que est all.
// escribo en esa referencia
referencia.set({
campoTest: 'valor del test',
ahora: new Date().getTime()
});
Nota: Un detalle, para no volverte loco en caso de error, es que para que este cdigo se ejecute
normalmente se necesitar dar permisos de lectura a esa referencia de la base de datos. Ms adelante en
el manual de Firebase encuentras informacin sobre las reglas de seguridad.
En la etapa de desarrollo puedes configurar unas reglas de seguridad ms permisivas de las que se
encuentran por defecto en las bases de datos de Firebase, permitiendo lectura y escritura a todo el
mundo. Esto ya lo hemos advertido tambin y explicado con ms detalle en el artculo de introduccin a
Firebase 3.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 17 de 78
Manual de Firebase
La diferencia entre set() y update() es que set() sustituye cualquier dato que haya en una referencia
anteriormente, mientras que update() lo actualiza. Dicho de otra manera, set() hace que se borre cualquier
informacin contenida en la referencia, poniendo la informacin nueva que se est seteando. Por su parte
update() hace lo que conocemos como un "merge", es decir, cualquier informacin existente se actualiza a la
informacin que se le est entregando y cualquier informacin que ya hubiera (y no se est actualizando en
el update), se mantiene.
Nota: Por favor, para ms informacin sobre las operativas de set() y update() lee el artculo hasta el
final, porque esto no ha cambiado y ya se haba explicado convenientemente con ejemplos para la
anterior versin de Firebase.
Pgina 18 de 78
Manual de Firebase
dentro de otros, para conseguir cualquier estructura de almacenamiento que necesites. Lo importante ahora
es que, a nivel de referencias, todos esos niveles de anidacin se separan mediante el carcter barra "/".
Por ejemplo, si tienes una lista de usuarios y cada uno tiene un identificador y una serie de datos como su
nombre o email, tendramos una estructura como esta:
users: {
iduser1: {
nombre: 'Miguel Angel Alvarez',
email: 'malvarez@desarrolloweb.com'
},
iduser2: {
nombre: 'Alvaro Martnez',
email: 'alvaro@escuela.it'
}
}
Si mediante Firebase necesito acceder a la lista de usuarios usar una referencia como esta:
var referencia = databaseService.ref('users');
Si ahora quiero acceder al primer usuario de la lista, entonces podr construir mi referencia expresando los
niveles de anidacin con la "/".
var referencia = databaseService.ref('users/iduser1');
Si quiero acceder nicamente al nombre del usuario primero, entonces mi referencia quedara as:
var referencia = databaseService.ref('users/iduser1/nombre');
Como alternativa, puedes navegar entre referencias por medio del mtodo child() del API de Firebase:
var referencia = databaseService.ref('users').child('iduser1').child('nombre');
referencia.set('Miguel Angel Alvarez Snchez');
En el siguiente cdigo puedes ver un ejemplo completo de uso de Firebase para escribir datos en la base de
datos en tiempo real.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Firebase Cliente Web</title>
</head>
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 19 de 78
Manual de Firebase
<body>
<h1>Test con Firebase</h1>
<script src="bower_components/firebase/firebase.js"></script>
<script>
// Inicializo Firebase
var config = {
apiKey: "AIzaSyAK6ZTPi-aPUoJhTggEtTW2csVzU9I371Y",
authDomain: "nuevo-firebase.firebaseapp.com",
databaseURL: "https://nuevo-firebase.firebaseio.com",
storageBucket: "nuevo-firebase.appspot.com",
};
firebase.initializeApp(config);
</script>
</body>
</html>
Pgina 20 de 78
Manual de Firebase
Nota: La mayora de la informacin que encontrars a continuacin tiene validez tambin para Firebase
3, cambia solo el mtodo para obtener una referencia de la base de datos y el mtodo de indicar las
funciones callback a ejecutar ante los casos de xito y error.
Para entender lo que vamos a realizar es especialmente recomendable que comiences la lectura por el
artculo de iniciacin a Firebase, porque hay varios conceptos que vamos a dar por sabidos en esta ocasin.
A lo largo de este texto te explicaremos a introducir un objeto, con diferentes propiedades y valores, en
Firebase y luego cmo se puede actualizar para cambiar el estado de sus propiedades o insertar otras nuevas.
Esta operacin es siempre igual cuando se trabaja con Firebase, solo cambiar la URL de nuestra app y el
dato en concreto que quieras acceder con la referencia.
En tu base de datos crears cierto orden y en la jerarqua que tengas de elementos en el JSON tus datos se
encontrarn en un lugar u otro. En esta ocasin estamos accediendo a un documento que cuelga de la raz
llamado "appData".
Podrs apreciar que esta referencia nos lleva a un documento que no existe todava dentro de tu aplicacin
Firebase. Esto no es problema, no va a producir ningn error, ya que a Firebase no le importa que la
referencia te lleve a una direccin que est vaca. Adems dentro de poco insertaremos datos ah.
Pgina 21 de 78
Manual de Firebase
En este cdigo primero hemos creado un objeto por medio de un literal de objeto Javascript y luego lo
hemos asignado a la referencia. Si lo ejecutas sobre tu aplicacin Firebase vers que se crea el juego de datos
sobre la referencia "appData".
Por si algo no queda claro, te proporcionamos el cdigo entero del .html con el que podras ejecutar esta
escritura de datos sobre la base de datos de Firebase.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Crear registros en Firebase</title>
<script src="bower_components/firebase/firebase.js"></script>
<script>
var ref = new Firebase("https://juegosdemesa.firebaseio.com/appData");
var obj ={
name: "Juegos de Mesa",
company: "EscuelaIT",
email: "contacto@escuela.it"
};
ref.set(obj);
</script>
</head>
<body>
<h1>Ejemplo para escribir datos en Firebase</h1>
</body>
</html>
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 22 de 78
Manual de Firebase
El nuevo valor enviado con set() machacar por completo el objeto appData anterior. Por tanto despus de
la operacin el estado ser:
appData: {
email: "info@escuela.it",
language: "es"
}
El mtodo update(), a diferencia de set(), no machaca lo que hubiera anteriormente en una referencia, sino
que hace un merge (fusin) de la informacin nueva con la vieja. Si en la referencia anteriormente haba un
dato que se est mencionando en el update (como "email" en este anterior cdigo), lo sobreescribe. Si el
atributo no se encontraba antes, simplemente lo crea con el valor dado.
Por tanto, update() lo usaremos tanto cuando necesitemos actualizar el valor de una propiedad de un objeto,
como cuando queramos crear nuevas propiedades de un objeto dejando intactas las anteriores.
En futuros artculos explicaremos otro mtodo interesante, llamado push(), que nos permite enviar
elementos, generalmente para crear colecciones de datos, a Firebase.
Pgina 23 de 78
Manual de Firebase
En este videotutorial vers cmo creamos un objeto usando set() y cmo se actualiza nuestro juego de datos
en Firebase. Luego mostramos la diferencia entre hacer una operacin de update y una de set.
Por ltimo mostramos cmo se puede acceder a los datos de Firebase desde otra pgina web, que estar
suscrita a los eventos producidos cuando se cambie el valor de un dato, para actualizarlo en la pgina
automticamente.
Pgina 24 de 78
Manual de Firebase
Esto es un detalle importante de conocer previamente nos enfrentemos a esta prctica. Merece la pena verlo
con detalle detenidamente ms adelante, pero de momento simplemente lo vamos a mencionar para ir
directamente a la prctica.
Tenlo en cuenta, en Firebase no tenemos arrays. Por eso, aunque lo ms inmediato sera pensar que nuestra
coleccin de usuarios se encuentra en un array, lo cierto es que no va a ser as. La coleccin en Firebase est
compuesta por un objeto cuyas propiedades son el ndice de la coleccin y el valor es el objeto de cada item.
Lo vers con detalle en la siguiente imagen y en seguida practicaremos con ello.
Observa que cada juego est metido en un objeto. Cada uno de los objetos juego tiene lo que se llama un
identificador, que es una cadena alfanumrica muy rara como "-K980osTuGiK0aRZ9t_3". De este
identificador cuelga un objeto con los datos del item. Ten en cuenta estos identificadores generados
aleatoriamente por Firebase porque los utilizaremos ms adelante para nuestra operativa en la
programacin.
Pgina 25 de 78
Manual de Firebase
Esta operativa de generar el item con push() y luego invocar set() se puede reducir a un solo paso, enviando
a push() el dato que queremos asignar al item recin creado.
var ref = new Firebase("https://ejemplo.firebaseio.com/juegos");
ref.push({
propiedad: "Valor"
});
Adems, como segundo parmetro, push() podra recibir una funcin callback que se ejecute cuando el dato
se haya guardado dentro de Firebase.
En el siguiente cdigo insertamos tres objetos juego sobre una referencia.
var ref = new Firebase("https://ejemplo.firebaseio.com/juegos");
var juego1 = {
name: "Colonos de Catn",
author: "Klaus Teuber",
yearPublished: 1995
}
ref.push(juego1);
var juego2 = {
name: "Carcassonne",
author: "Klaus-Jrgen Wrede",
yearPublished: 2000
}
ref.push(juego2);
var juego3 = {
name: "Ticket to Ride: Europe",
author: "Alan R. Moon",
yearPublished: 2005
}
ref.push(juego3);
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 26 de 78
Manual de Firebase
Este evento "child_added" se ejecuta cada vez que un objeto es aadido a una coleccin. De modo que se
disparar el evento cuando:
1. Una vez por cada item existente en la coleccin en el caso que estemos accediendo a una coleccin
por primera vez.
2. Posteriormente al primer acceso el evento se disparar una vez para cada item que se introduzca
dentro de la coleccin.
De modo que, para nuestra necesidad, acceder a los elementos de una coleccin, usaremos este evento, que
nos servir para recuperar los item actuales hacer cosas con cada item que pueda llegar a introducirse ms
adelante en la base de datos.
ref.on("child_added", function(snapshot){
//hacer cosas con cada snapshot
});
El manejador de eventos asociado a child_added recibe la instantnea del elemento actual. Si hay 10
elementos en la coleccin este manejador se ejecutar 10 veces y en cada ejecucin tendremos el item actual.
Ya solo nos quedara hacer cosas con ese snapshot.
Para la operativa te interesar conocer dos mtodos pertenecientes a los snapshots de Firebase:
val(): que nos devuelve el valor, el dato, ya sea un objeto o un dato simple.
key(): que nos devuelve el identificador de este item.
En el siguiente cdigo, para cada juego recibido, se muestran sus valores y llaves mediante console.log().
var ref = new Firebase("https://juegosdemesa.firebaseio.com/juegos/");
ref.on("child_added", function(snapshot){
console.log("El juego actual es ", snapshot.val());
console.log("El id actual es ", snapshot.key());
});
Podrs comprobar que se listan los elementos iniciales de la coleccin y, si ms adelante se agregan nuevos
elementos, se listarn igualmente.
Pgina 27 de 78
Manual de Firebase
explicar.
ref.on("child_changed", function(snapshot){
console.log("Detectado cambio en ", snapshot.key());
console.log("El nuevo valor es ", snapshot.val());
});
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 28 de 78
Manual de Firebase
Pgina 29 de 78
Manual de Firebase
Authentication" que deber estar marcado para permitir este modelo de autenticacin de usuarios.
Una vez tenemos nuestra referencia debemos construir un objeto usuario, en el cual colocaremos dos
propiedades: email y password.
var user = {
email: "malvarez@desarrolloweb.com",
password: "1234"
};
stas son las credenciales que usaremos tanto para registrar usuarios como para hacer el correspondiente
login, una vez que estn registrados. En el cdigo anterior has visto cmo crear este objeto usuario por
medio de un literal de objeto JavaScript, pero lo ms normal sera que ese objeto lo construyas por medio de
los datos recabados mediante un formulario.
Al mtodo createUser() le enviamos dos parmetros. En el primero indicamos el objeto usuario que
acabamos de construir y en el segundo indicamos una funcin callback, que nos permite ejecutar cdigo
cuando el intento de crear el usuario haya sido finalizado. Esta funcin callback recibe a su vez como
parmetro un posible objeto error. Decimos posible porque si no se produjo un error simplemente nos
llegar el valor "null". Si se produjo un error a partir de ese objeto podremos encontrar una descripcin del
problema que Firebase ha detectado.
Se ver mejor con el cdigo que encuentras a continuacin:
ref.createUser(user, function(error){
if(error){
console.log(error.code);
}else{
console.log("Tu usuario se ha registrado");
}
});
Pgina 30 de 78
Manual de Firebase
Una vez que hemos registrado nuestro primer usuario podemos proceder a realizar un intento de
autenticacin con el mismo.
Para realizar el intento de autenticacion del usuario utilizamos el mtodo authWithPassword() sobre una
referencia a nuestra base de datos Firebase, igual que antes..
Nota: Recuerda que firebase implementa diversos mtodos de autenticacin de usuarios y nosotros
estamos viendo ahora el que nos permitira loguearnos por medio del usuario que se ha registrado en el
paso anterior. Para otros mecanismos se usan mtodos diferentes de authWithPassword(). Ms adelante
trataremos otros mtodos de autenticacin.
El mtodo authWithPassword() recibe como parmetro el objeto usuario con las credenciales de acceso.
var user = {
email: "malvarez@desarrolloweb.com",
password: "1234"
};
ref.authWithPassword(user);
Nota: Fjate que el objeto usuario "user" el mismo que habamos construido anteriormente. Volvemos a
repetir que lo normal no ser utilizar un literal de objeto, sino recibir los datos de autenticacin por
medio de un formulario.
El mtodo de autenticacin authWithPassword() tambin podra recibir como parmetro una funcin
callback para realizar acciones cuando se tiene resultado del intento de acceso del usuario, pero nosotros
ahora vamos a conocer otra va para ser notificados cuando se haya producido un cambio en el estado del
usuario (pasar de loguedado a no logueado o viceversa).
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 31 de 78
Manual de Firebase
}else{
console.log("no tengo usuario autenticado");
}
});
Como puedes ver, la funcin enviada como parmetro al mtodo onAuth() recibe a su vez un parmetro
que hemos nombrado en el cdigo como "data". Ese parmetro contiene los hipotticos datos de
autenticacin del usuario. Realmente pueden ocurrir dos cosas:
Si el usuario no est autenticado, simplemente recibiremos un null como valor de ese parmetro. En el caso
de que el usuario s estuviera autenticado en ese parmetro recibiremos los datos de autenticacin del
usuario que est correctamente logueado.
De entre todos los datos que se pueden consultar por medio del objeto de autenticacin hay uno muy
importante qu es el identificador del usuario. En Firebase cada usuario registrado tiene un identificador
nico y nosotros lo podemos consultar por medio de la propiedad "uid".
Nota: Con la declaracin de este evento onAuth() se ejecuta una primera vez la funcin indicada por
parmetro. Luego, en cada cambio autenticacin, se volver a ejecutar esa funcin. Por ello, aunque no
se realice ningn intento de autenticacin durante el uso de tu aplicacin, solo por haber definido este
evento onAuth(), siempre se ver el resultado de la ejecucin de la funcin por lo menos una vez.
Pgina 32 de 78
Manual de Firebase
Actualizacin: En este artculo vamos a abarcar tanto el cdigo con Firebase 2 como el cdigo con
Firebase 3. Siendo los conceptos de autenticacin comunes a ambas versiones, as como a la mayora del
desarrollo para la web. Para que quede clara la organizacin de este artculo cabe decir que
comenzaremos con una serie de conceptos importantes sobre los sistemas de autenticacin. Luego
veremos ya el cdigo sobre cmo se implementan en Firebase, v2 y v3, dividiendo los apartados de
manera que quede clara la identificacin de cada cdigo y su correspondiente versin.
Pgina 33 de 78
Manual de Firebase
la aplicacin. Tenemos que comenzar habilitando aquella autenticacin que se requiera, con la red social que
necesitemos. Para ello encontraremos un checkbox que deber estar marcado para permitir autenticar a los
visitantes en cada una de las redes que deseemos.
Adems tendremos que entregar las credenciales de la app creada en la correspondiente red social. Estas
credenciales las creamos desde la propia pgina de la red que deseemos. Generalmente existe un rea para
desarrolladores donde se pueden crear apps en esa red, asociadas a nuestro usuario.
El proceso de crear un App vara para cada caso. En general es algo rpido y no necesita aprobacin por
parte de la red social, simplemente la creas a travs de su pgina. Sin embargo el modo de actuar cambia con
cada red social que ests trabajando.
Todas al final te entregan dos cadenas que debes usar para configurar el servicio de autenticacin desde el
Dashboard de tu app en Firebase.
App Id: Es el id de tu aplicacin. Ese identificador es pblico, cualquiera lo puede ver.
App Secret: Esta es una llave de tu app, que se necesita para confirmar que t eres realmente el
dueo de esa app. Ese dato es privado y debera guardarse en un sitio seguro.
Nota: En la documentacin de Firebase est muy bien detallado el proceso de creacin de apps en cada
una de las redes sociales, por lo que de momento te recomendamos leerlo all. Ahora nos vamos a
centrar en el cdigo para autenticar usuarios y no tanto en la operativa para cada app de red social. Por
si te sirve, la operacin que necesitas hacer con la red social se llama autenticacin "oAuth".
El otro paso que no se nos puede olvidar es configurar la URL de redireccin oAuth. Esto es algo que te
informan en la consola de Firebase, que tiene una forma como https://tuapp.firebaseapp.com/__/auth/handler. Esta URL la copias desde la pgina de administracin de la app en
la consola de Firebase (seccin Auth / Mtodo de inicio de sesin / Red social deseada) y luego la tienes
que configurar en la pgina de administracin de la App generada en la red socia con la que quieras
autenticar.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 34 de 78
Manual de Firebase
Pgina 35 de 78
Manual de Firebase
Ya que estamos en Firebase 3, debemos comenzar inicializando nuestra aplicacin. No vamos a entrar en
este detalle ya que debe estar claro anteriormente. Si no es as, puedes leer el artculo de Introduccin a
Firebase 3.
Para la parte de autenticacin social debemos comenzar por configurar nuestro proveedor oAuth, (red
social Facebook, Twitter, Google o GitHub). Consta de dos pasos, uno en el que creamos el "provider"
adecuado y otro en el que podemos agregar "scopes". En el caso de Facebook, conseguimos el proveedor
con el siguiente cdigo:
var provider = new firebase.auth.FacebookAuthProvider();
A continuacin de manera opcional podemos indicar aquellos "scopes" sobre los que queremos que nos
autorice el usuario. El "scope" en resumen es el mbito de datos que queremos que la red social nos
proporcione sobre un usuario. stos aparecen en la ventana de login con la red social e indican al usuario
qu es lo que quiere nuestra aplicacin hacer con su cuenta de Facebook, Twitter o lo que sea. Por
supuesto, cada red social tiene una lista de posibles mbitos sobre los que podemos requerir permiso.
provider.addScope('user_friends');
Tiene dos mtodos principales para realizar autenticacin, por medio de un popup y por medio de una
redireccin. Son dos mecanismos que puedes usar dependiendo del navegador del usuario, sistema
operativo, etc. En principio casi siempre se usa popups, pero para los sistemas que no lo permiten se puede
dar la alternativa de login por redireccin. En la parte final de este artculo, cuando comenzamos a ver el
cdigo de Firebase 2, se explica con ms detalle la diferencia entre estas dos alternativas, popup o
redireccin.
Para el acceso al API de autenticacin de Firebase podemos comenzar accediendo al servicio de
autenticacin:
var authService = firebase.auth();
Una vez tienes el servicio de autenticacin, con la siguiente lnea de cdigo lanzaramos el proceso de login
con el provider generado anteriormente.
authService.signInWithPopup(provider)
Otra cosa que debes de saber es que la respuesta de la llamada a los mtodos de autenticacin de Firebase te
responde con una promesa. Debes ya saber algunas cosas sobre promesas, porque las hemos visto en
artculos anteriores. Bsicamente las promesas de Firebase funcionan como las promesas del propio ES6.
De este modo podramos ejecutar acciones tanto para un resultado de autenticacin positivo como para un
error de autenticacin.
authService.signInWithPopup(provider)
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 36 de 78
Manual de Firebase
.then(function(result) {
//todo correcto
console.log('autenticado usuario ', result.user);
})
.catch(function(error) {
// error de login
console.log('Detectado un error:', error);
});
<script src="bower_components/firebase/firebase.js"></script>
<script>
// Inicializo Firebase
var config = {
apiKey: "AIzaSyAK6ZTPi-aPUoJhTggEtTW2csVzU9I371Y",
authDomain: "nuevo-firebase.firebaseapp.com",
databaseURL: "https://nuevo-firebase.firebaseio.com",
storageBucket: "nuevo-firebase.appspot.com",
};
firebase.initializeApp(config);
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 37 de 78
Manual de Firebase
</script>
</body>
</html>
A partir de ahora, en este artculo encuentras el modo de login social con Firebase 2. En principio si ests en
Firebase 3 no hara mucha falta que lo leyeras, sin embargo, se explica con mucho ms detalle algunos
puntos interesantes, como el caso de los mecanismos de popup y redireccin, as como otros detalles que
quizs te convenga conocer.
Como ves, se usa el mtodo authWithOAuthPopup() al que se le indica el conector social que se quiera
usar. En este caso es "facebook", pero el cdigo sera exactamente igual para el acceso con cualquier otra
red.
Luego se indica una funcin callback con las acciones a realizar cuando se produzca el intento de login del
usuario. Aqu puedes gestionar tanto errores de autenticacin como accesos permitidos.
Nota: Si quieres de manera asncrona estar informado cuando se produzca una autenticacin, el
mecanismo es por el mtodo onAuth() que vimos en el anterior artculo sobre Autenticacin por medio
de usuario y password. Esto es interesante porque te podra permitir prescindir de la funcin callback
para los casos de autenticacin correcta y es clave para el mtodo de autenticacin por redireccin, que
enseguida te comentamos.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 38 de 78
Manual de Firebase
Solo cambia el nombre del mtodo authWithOAuthRedirect() y el tema del callback, que ser imposible de
ejecutar debido a que Javascript no recuerda el estado de nuestro script cuando se recibe la rediccin de
vuelta a nuestra app.
Nota: En este caso, ya que en la redireccin no se puede detectar el retorno, no se llegar a ejecutar la
funcin callback para el caso positivo. Por ello ser importante conocer el mtodo onAuth(), que es
donde detectaremos que el usuario consigui autenticarse correctamente.
Pgina 39 de 78
Manual de Firebase
base de datos.
Todos esos datos los encuentras a travs del objeto authData, que recibes tanto en el callback de las
funciones con las que autenticas, en onAuth() o en getAuth(). Funciona de manera similar al proceso
explicado con el login y password, pero en el prximo artculo lo detallaremos para apartar cualquier tipo de
duda.
Para finalizar te ofrecemos la posibilidad de ver este vdeo, donde vers el proceso detallado sobre cmo
autenticar usando la red social Facebook. Adems vers cmo se crea una app en Facebook y cmo
configurarla, llevando tambin los datos de las llaves y el secreto a Firebase para configurar tu propia
aplicacin.
Pgina 40 de 78
Manual de Firebase
Hacer logout
Lo bueno de Google es que, al Firebase estar perfectamente integrado con Google Cloud, no necesitamos
crear una app en Google ni copiar valores de las llaves (api key / api secret). Esto nos evita la configuracin
de la mayor parte del servicio. No obstante recuerda que siempre tienes que activar el mtodo de inicio de
sesin.
Solo un detalle ms. Tu aplicacin debe tener posibilidad de hacer inicio de sesin desde el dominio donde
la vayas a ejecutar. Esto es algo que debes hacer tambin desde la consola de Firebase, en la misma pgina
de los mtodos de inicio de sesin, pero un poco ms abajo, seccin "Dominios de redireccionamiento de
OAuth". Vers que localhost ya est activado por defecto, pero tendrs que agregar cualquier otro dominio
o IP desde donde vayan a autenticarse usuarios, tanto para hacer pruebas como para poner el sitio en
produccin.
Estas son las nicas configuraciones que tendrs que hacer dentro de la consola de Firebase. El resto queda
del lado del cdigo Javascript.
Pgina 41 de 78
Manual de Firebase
<script>
// accedo al servicio de autenticacin
var authService = firebase.auth();
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 42 de 78
Manual de Firebase
</body>
</html>
Con esto terminamos. Como es una pgina web esttica podrs probar el script en cualquier lugar. Eso s,
recuerda que para ejecutarlo debes pasar por un servidor web. Y sobre todo, ten en cuenta activar el
dominio para inicio de sesin, tal como se explic en el artculo.
Pgina 43 de 78
Manual de Firebase
Una vez que un usuario se ha logueado con el conector social correspondiente lo ms seguro es que quieras
captar datos personales de la cuenta, con los que personalizar la experiencia de uso de tu aplicacin.
Nombre, apellidos, email, imagen avatar son datos que habitualmente exponen las redes sociales para las
aplicaciones que hacen oAuth.
Dependiendo de la red social y de la informacin personal que necesites tendrs que recuperarla de un
modo u otro. Sabiendo adems que existen diferencias diversas entre los proveedores de oAuth que
Firebase nos permite usar:
Informacin que ser posible recabar. Por ejemplo, Twitter no permite saber el correo de los
usuarios.
Informacin que se entrega de manera predeterminada. Por ejemplo Facebook no expone el correo
de manera predeterminada pero Github s.
Permisos especiales que necesitas solicitar para obtener ms informacin de los usuarios, en el caso
de Google y Facebook, pues tiienen diversos niveles de permisos que se pueden solicitar de manera
extraordinaria cuando nos logueamos.
Ese mtodo depende, como muchos otros, de una referencia a tu aplicacin. Al invocarlo te devuelve los
datos del usuario que est autenticado, o null, si no se autentic ningn usuario hasta el momento.
Nota: Recuerda adems que ese mismo objeto authData lo puedes obtener mediante la funcin callback
ejecutada tras el intento de autenticacin. Adems de manera asncrona mediante onAuth(). Todo eso ya
se explic.
Si nos hemos logueado con una red social en ese objeto encontraremos toda la informacin que esa red nos
proporciona. Ese objeto tendr una forma como se puede ver en la siguiente imagen:
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 44 de 78
Manual de Firebase
Nota: Como decamos al principio del artculo, los datos que se proporcionan de manera
predeterminada dependen mucho de la red social. Durante el proceso de login los podemos alterar
solicitando nuevos permisos adicionales. Esto es vlido al autenticarse con Facebook, Google y Github.
Twitter no nos ofrece la posibilidad de solicitar permisos adicionales.
Para definir qu nuevos permisos, adicionales a los predeterninados, necesitas que se concedan a tu
aplicacin tienes la posibilidad de definir el "scope". Ahora vamos a ver cmo usar ese parmetro,
procedimiento que ser exactamente igual autentiques mediante el mtodo authWithOAuthPopup() o
authWithOAuthRedirect().
Nota: En el pasado artculo de autenticacin con redes sociales ya explicamos las bases para trabajo con
esos mtodos. Ahora veremos cmo indicarle permisos adicionales a travs del scope.
Eso indicar a Facebook que tu aplicacin tambin quiere leer el email del usuario y por tanto Facebook se
encargar de informar al usuario interesado que esta informacin ser accedida. Si el usuario otorga los
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 45 de 78
Manual de Firebase
En el siguiente cdigo vers cmo realizar el login del usuario. En caso de detectar un logueo correctamente
se podr acceder a los datos del usuario mediante el parmetro authData y almacenarlo en la base de datos.
var ref = new Firebase("https://ejapp.firebaseio.com/");
ref.authWithOAuthPopup("facebook", function(error, authData) {
if(error) {
// gestionar un error en el intento de autenticacin
} else {
// gestionar el acceso permitido, almacenando el perfil
var refUser = ref.child("user").child(authData.uid);
refUser.set({
email: authData.facebook.email,
nombreCompleto: authData.facebook.displayName
});
}
},{
scope: 'email'
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 46 de 78
Manual de Firebase
});
Esta estrategia no funcionara tan bien si estamos usando el mtodo authWithOAuthRedirect(), puesto que
al producirse la redireccin no seremos capaces de ejecutar el cdigo de la funcin callback. Podemos llevar
esa lgica hacia el mtodo onAuth, que tambin se ejecuta al detectar el logueo positivo.
var ref = new Firebase("https://ejapp.firebaseio.com/");
ref.onAuth(function(authData){
if(authData) {
console.log('el usuario est autenticado');
var refUser = ref.child("user").child(authData.uid);
refUser.set({
email: authData.facebook.email,
nombreCompleto: authData.facebook.displayName
})
} else {
console.log('el usuario NO est autenticado');
}
});
Eso es todo. Como has podido comprobar, el cdigo que se necesita es bastante elemental, gracias a
Firebase. Para otras redes sociales ser un cdigo exactamente igual, o con mnimas diferencias porque el
objeto de autenticacin tendr juegos de propiedades diferentes y algunas veces hasta otros nombres.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 47 de 78
Manual de Firebase
Pgina 48 de 78
Manual de Firebase
Llegaremos all.
Comencemos echando un vistazo a las reglas de seguridad que encontramos en una aplicacin firebase
recin creada.
{
"rules": {
".read": true,
".write": true
}
}
Como ves se utiliza una notacin JSON para definir las reglas en este caso estamos otorgando permisos de
lectura y escritura para cualquier entidad que est en nuestra base de datos Firebase.
La regla para el permiso de lectura comienza con ".read", mientras que la regla para el permiso de escritura
se escribe en el tem ".write". El valor true indica un permiso bajo cualquier situacin, lgicamente esto est
bien para que nuestra aplicacin nos permita empezar a trabajar pero no ser lo adecuado cuando
pongamos esta aplicacin en produccin.
Nota: Adems de ".read" y ".write", en Firebase tambin podemos escribir reglas en ".validate" para
poder validar datos antes que stos sean escritos dentro de la aplicacin. Esta validacin de datos es
fundamental para asegurarse que las cosas que se guardan en la base de datos tienen la forma que
debera tener, pero no la hemos cubierto en el presente artculo.
La estructura del archivo de reglas en JSON debe corresponder con la estructura que hayas definido en tu
base de datos Firebase. De momento para nuestro ejemplo vamos a pensar que existir una entidad llamada
"perfiles". De ella colgaran todos los datos de los perfiles de usuario.
perfiles {
user_id1: {
name: "Miguel"
bio: "Fundador de DesarrolloWeb.com"
},
user_id2: {
name: "Alvaro"
bio: "Co-fundador de EscuelaIT"
}
}
Si esta fuera la nica entidad en nuestra aplicacin, podramos tener una estructura de reglas de seguridad
como la que sigue:
{
"rules": {
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 49 de 78
Manual de Firebase
"perfiles": {
".read": true,
".write": false
}
}
}
As estaramos dando permisos de seguridad para permitir la lectura de todos los perfiles, pero no permitir
la escritura.
Ahora dentro de las reglas ".read" o ".write" (o las mencionadas ".validate" que no estamos viendo todava)
podremos acceder a "$user_id" para saber el identificador del usuario que se intenta leer o escribir.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 50 de 78
Manual de Firebase
Bsicamente estamos aplicando seguridad a la entidad "perfiles". Dentro de la entidad tenemos declarada la
"Variable [[--body--]]quot; "$user_id" que nos dice cul es el identificado de usuario que se est intentando
leer o escribir.
".read": "auth != null",
Esto quiere decir que, cuando el usuario autenticado sea distinto de null (tenemos cualquier usuario
correctamente logueado) se otorgar permiso de lectura.
".write": "$user_id === auth.uid"
Esto quiere decir que el permiso de escritura slo se conceder cuando el identificador del usuario al que se
pretende acceder sea igual del identificador de usuario que est logueado en el sistema.
Conclusin
Comenzar a usar las reglas de seguridad de Firebase es sencillo, sin embargo si quieres ser preciso y muy
especfico comienzan a encontarse problemas, bsicamente porque el JSON se hace un poco lioso de
escribir y difcil de mantener. La seguridad es un tema muy importante y hay que ser muy cuidadoso. Si
quieres ser detallista observars que necesitas bastante trabajo, algo que se soluciona muy bien cuando
comienzas a usar "Bolt compiler".
Con esto que has aprendido tienes un pequeo porcentaje de los conocimientos necesarios para establecer
las reglas de seguridad de tu aplicacin, pero es un buen comienzo para ir practicando cosas. Nos quedan
ver diversas otras variables disponibles, la validacin de datos, el acceso a listados de items o a items
particulares, varios niveles de "Variables [[--body--]]quot;, el compilador "Bolt" y una buena cantidad de
buenas prcticas y consideraciones para no dejar cabos sueltos en algo tan importante como es la seguridad.
Seguiremos explorando el sistema en nuevos artculos del Manual de Firebase. Mientras tanto te dejamos el
vdeo donde explicamos las Regas de seguridad bsicas en Firebase, seguro que le sacas un gran partido.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 51 de 78
Manual de Firebase
Pgina 52 de 78
Manual de Firebase
carpeta/carpeta/archivo.png
Para navegar por las carpetas existen unos mtodos especficos, que para facilitarnos la vida nos sonarn
mucho a los que ya estamos familiarizados con el sistema de acceso a los datos en tiempo real.
Del lado de Javascript tenemos que comenzar accediendo al servicio donde se encuentra el API de Storage.
var storageService = firebase.storage();
Una vez tenemos nuestro servicio, podemos acceder a toda la serie de funciones que se encuentran en l. El
paso que generalmente realizars a continuacin es enlazar con una referencia. Puedes entender una
referencia como una ruta dentro del sistema de almacenamiento, como una ruta en el sistema de base de
datos o una ruta a un archivo de tu disco duro.
var referencia = storageService.ref('ruta/a/un/lugar/de/almacenamiento');
Otra alternativa sera obtener una referencia raz y luego con el mtodo child() navegar a una referencia
interior.
var referencia = storageService.ref();
var referencia = referencia.child('images');
Nota: La parte de obtener ese archivo ("Blob" o "File") mediante el navegador ya es otro asunto y lo
puedes hacer con APIs HTML5. El API File permite acceder a archivos del disco duro del usuario, que
haya seleccionado mediante un campo INPUT type file. El API Blob bsicamente permite crear objetos
con datos generados desde Javascript, es decir, que no necesariamente corresponden con archivos que
tengas en tu disco duro. Veremos un ejemplo ms tarde.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 53 de 78
Manual de Firebase
Como puedes ver, hemos enviado como funcin "Next" el valor null, porque no queremos monitorizar el
estado de la carga durante el tiempo de carga. Luego tenemos las dos funciones para detectar posibles
errores y la carga completada.
Pgina 54 de 78
Manual de Firebase
Ahora vamos a irnos a la parte prctica y veremos un cdigo completo que realiza las funciones de upload
de un archivo. Pero antes debes saber que de manera predeterminada Firebase exige que para subir archivos
deba haberse autenticado el usuario mediante cualquiera de los mecanismos. En este ejemplo usaremos
autenticacin annima, pero ten en cuenta que debe estar habilitada en la consola de Firebase.
Ten en cuenta tambin que tendrs que colocar tus propios datos de aplicacin Firebase para que funcione.
Explicamos cmo obtener tus datos de inicializacin de Firebase en el artculo sobre Introduccin a
Firebase 3.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Subir archivos con Firebase</title>
</head>
<body>
<input type="file" id="campoarchivo">
<div id="mensaje"></div>
<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyAKAAAPi-aPffdsliTggEtTW23s222I371Y",
authDomain: "tuapp.firebaseapp.com",
databaseURL: "https://tuapp.firebaseio.com",
storageBucket: "tuapp.appspot.com",
};
firebase.initializeApp(config);
window.onload = function() {
// realizamos la autenticacin annima (debe estar activada en la consola de Firebase)
authService.signInAnonymously()
.catch(function(error) {
console.error('Detectado error de autenticacin', error);
});
= evento.target.files[0];
subirArchivo(archivo);
});
}
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 55 de 78
Manual de Firebase
// a esta funcin la invocamos para mostrar el mensaje final despus del upload
function mensajeFinalizado(url, bytes) {
var elMensaje = document.getElementById('mensaje');
var textoMensaje = '<p>Subido el archivo!';
textoMensaje += '<br>Bytes subidos: ' + bytes;
textoMensaje += '<br><a href="' + url + '">Ver el fichero</a></p>';
elMensaje.innerHTML = textoMensaje;
}
</script>
</body>
</html>
Hemos comentado el cdigo para que no te pierdas. Estamos seguros que despus de la lectura del artculo
y los comentarios eres capaz de identificar toda la operativa de carga de un fichero a Firebase. Si lo pruebas
solo ten en cuenta colocar tus propios datos de inicializacin de Firebase.
Es un script de carga simplificado lo suficiente para que sea sencillo de entender. En otros artculos lo
editaremos para hacerlo un poco ms sofisticado y que sea capaz de mostrarnos el progreso de una subida,
algo muy importante para las cargas de archivos grandes.
Firebase Tools
Qu son las Firebase Tools, cmo obtenerlas y un resumen de los comandos que nos ofrecen para
mantener, desarrollar y desplegar aplicaciones en Firebase.
Firebase Tools es un paquete de herramientas pensadas para el desarrollo de aplicaciones Firebase. Son
tiles y hasta imprescindibles cuando vas a crear aplicaciones, permitiendo realizar diversos tipos de
operativas, como servir una pgina en local o hacer el despliegue de una aplicacin.
Decimos imprescindibles, aunque lo cierto es que podras empezar a desarrollar sin necesidad de tener las
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 56 de 78
Manual de Firebase
Firebase Tools. Sin embargo, para el hosting de Firebase no existe la posibilidad de acceder por FTP, ni
tampoco ssh o algo parecido, por lo que la nica manera de subir tus archivos es usando las Firebase Tools.
Instalar firebase-tools
El primer paso ser obtener las herramientas, que instalas con npm, por lnea de comandos:
npm install -g firebase-tools
Nota: En este tutorial trabajamos con las firebase-tools 3.x, por lo que si tienes las Firebase Tools
antiguas, rama 2.x, las tendras que actualizar.
Esta instalacin permite que tengamos disponible de manera global el comando "firebase", que a su vez
tendr varios sub-comandos para realizar diferentes cosas. Puedes comenzar lanzando el comando de ayuda
para ver todo lo que firebase-tools te proporciona:
firebase --help
Ese comando abrir un navegador para que des permisos a Firebase Tools, para lo que tendrs que
introducir la clave de tu cuenta de Google, con la que entras en la consola de Firebase.
firebase logout
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 57 de 78
Manual de Firebase
Ese comando servir para retirar los permisos a firebase tools, algo importante en ciertos casos, porque si
no lo haces, cualquiera con acceso a ese ordenador sera capaz de realizar cualquier accin con tus
aplicaciones.
Si lo lanzas sobre cualquier carpeta donde no hayas inicializado una aplicacin usar como "document root"
esa carpeta desde donde lo ejecutaste. Vers que te aparece justamente un mensaje en ingls informando de
esa situacin. Pero iniciando una aplicacin, como veremos a continuacin, evitars que te aparezca ese
mensaje de aviso y adems podrs configurar la raz del servidor en otras carpetas.
Este proceso recabar una serie de informaciones por lnea de comandos, para configurar tu aplicacin.
Nota: Para poder completar el proceso debes haber logueado previamente con tu cuenta Google, como
hemos dicho anteriormente.
Lo primero que te dice es que indiques qu quieres inicializar (What Firebase CLI features do you want to
setup for this folder?), ofreciendo dos posibilidades, las reglas de seguridad y el hosting. Puedes apretar la
barra espaciadora para seleccionar o no cualquiera de las opciones, aunque generalmente querrs ambas
cosas, para lo que pulsas enter.
Luego te preguntar qu aplicacin de Firebase, de las que has creado en la consola, quieres que se asocie a
esta aplicacin que se est inicializando.
A partir de ah seguramente podrs proporcionarle otros datos que necesita el comando, pero voy a dar un
algunos tips, que si eres nuevo en Firebase pueden contestarte alguna duda.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 58 de 78
Manual de Firebase
What file should be used for Database Rules? Aqu te est pidiendo el archivo donde vas a escribir las
reglas de seguridad en local. Si ya tienes un archivo como "rules.json" o algo parecido, simplemente
indcaselo. Pero OJO, en la siguiente pregunta te pedir si quieres que lo sobreescriba con un cdigo inicial,
dile que no, para que no te borre tus reglas actuales. Si no tienes un archivo de reglas puedes dejar la opcin
que te aparece por defecto "database.rules.json" pulsando enter. Entonces te crear tal archivo entre los de
tu proyecto.
What do you want to use as your public directory? Aqu te est preguntando sobre la carpeta raz de
publicacin, o document root. Puedes indicarle el lugar donde tienes tu index.html, o si quieres la carpeta
que te propone (public), en cuyo caso te la crear y colocar un index.html inicial.
Configure as a single-page app (rewrite all urls to /index.html)? Esto es para que le indiques si tu web
va a ser una SPA (single page application) o aplicacin de una sola pgina. Ya sabes, una aplicacin web
donde solo hay un index.html y todas las rutas de la aplicacin realmente se sirven desde el mismo fichero.
Una vez ejecutado el firebase init te crear dos archivos: firebase.json y .firebaserc que contendrn la
informacin entrada en este proceso, en los formatos que Firebase necesita.
Ahora todo ser automtico y al final te aparecer un mensaje con la URL del dominio donde puedes ver tu
web una vez publicada en el servidor de Firebase.
Existen otros comandos menos necesarios para la operativa del da a da, dentro de las Firebase Tools, te
recomiendo que consultes la ayuda o bien accedas al repositorio de Github donde est el cdigo de firebasetools para encontrar ms informacin.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 59 de 78
Manual de Firebase
Polymerfire
Explicaciones sobre el uso de Firebase en aplicaciones realizadas con la librera Polymer. Polymer tiene una
serie de componentes que permiten trabajar con Firebase de una manera muy gil y sencilla. Los
analizaremos con varios ejemplos que seguro que sorprendern y gustarn al lector.
Nota: Doy por hecho que ests familiarizado tanto con Firebase como con Polymer. Si no es as
simplemente consulta el Manual de Firebase o el Manual de Polymer.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 60 de 78
Manual de Firebase
Nota: Obviamente, necesitas tener las herramientas de Firebase instaladas. Lee el artculo de las
firebase-tools para ms informacin detallada sobre este proceso.
Instalar Polymerfire
Ahora instalars Polymerfire en la carpeta del proyecto donde ests trabajando. Previamente habrs inciado
Bower con el comando "bower init", que es algo en lo que no vamos a entrar porque est explicado
previamente y porque tienes un completo artculo sobre Bower.
bower install --save polymerfire
Esto te instalar de una vez los componentes de Polymerfire y tambin todas sus dependencias, entre las
que encuentras varias, como el SDK de Firebase para Javascript, el propio Polymer y otras.
Nota: Polymerfire es sencillo de usar. Realmente no necesitas ms para comenzar, pero lo cierto es que
existen muchos otros componentes de Polymer que tambin se llevan muy bien con Firebase y ofrecen
cosas tan interesantes como la posibilidad de mantener en local los datos de tu aplicacin, incluso si el
ordenador del cliente pierde la conexin a Internet. Esa parte, un poco ms avanzada, la podremos ver
ms adelante.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 61 de 78
Manual de Firebase
Componente firebase-app
El trabajo con los componentes de Polymer para Firebase se divide entre varios custom elements de
Polymer. El primero que debes conocer es "firebase-app". Este componente hace la funcin de configurar
tu aplicacin y mantiene la configuracin disponible para cualquier otro componente que la quiera usar.
Para usarlo puedes partir de este cdigo:
<firebase-app
name="nombreApp"
api-key="PON AQU TU API-KEY"
auth-domain="PON AQU TU AUTH-DOMAIN"
database-url="PON AQU TU DATABASE-URL">
</firebase-app>
Los valores con los que configurars ese elemento estn en la consola de Firebase. En el artculo de
introduccin a la nueva versin de Firebase ya te explicamos cmo obtenerlos.
Mencin especial merece el valor "name", que es el nombre de la aplicacin que tendrs para esta
configuracin. Nosotros hemos colocado como valor "nombreApp" en este ejemplo, pero t colocars
cualquier cosa. No es necesario que se llame igual que la app de Firebase que has creado en la consola. Es
solo un nombre interno que se usar dentro de tu desarrollo con Polymer.
Nota: Nunca te olvides de hacer el correspondiente "import" de los componentes que quieras usar. Los
de Polymerfire estarn en la carpeta "bower_components/polymerfire/".
Componente firebase-document
Definida tu aplicacin, ya ests en la posibilidad de usar otros componentes de Polymerfire para ir haciendo
cosas interesantes. Creemos que lo ms sencillo es comenzar por el componente "firebase-document" que
sirve para acceder a un documento de la base de datos en tiempo real y mantenerlo sincronizado.
Nota: Un documento es cualquier informacin que tienes en la base de datos de Firebase. Sabes que es
una base de datos "documental" en la que se usa JSON para guardar informacin. Cada dato ser un
objeto JSON con sus propiedades y valores. Eso es un documento.
Pgina 62 de 78
Manual de Firebase
Si modificamos nosotros el objeto que nos brinda "firebase-document", asignando cualquier nuevo
valor, ese dato viajar automticamente a la base de datos de Firebase, que a su vez sincronizara el
dato con cualquier otro cliente que lo est consumiendo.
Usars una sintaxis como esta para implementar este componente:
<firebase-document
app-name="nombreApp"
path="/objeto"
data="{{misdatos}}"
></firebase-document>
Lo primero que ves es el atributo "app-name". Este debe tener el valor que se haya colocado anteriormente
en el "name" del componente "firebase-app". As le ests diciendo a firebase-document qu configuracin
de app debe usar. Es muy importante este campo, porque sin l no te funcionar.
luego encuentras el atributo "path". En l colocas el camino al documento que quieres acceder de la base de
datos de Firebase.
Nota: Es importante sealar que para el acceso o modificacin de los datos de Firebase se tienen en
cuenta los permisos definidos en las reglas de seguridad. Ojo al detalle sobre todo en proyectos que
iniciamos, porque las bases de datos de Firebase 3 vienen protegidas para que solo se pueda leer o
escribir si existe un usuario autenticado. En este artculo no entramos todava en autenticacin de
usuarios y tendras que modificar las reglas para que permitieran acceso al documento para que te
funcionen los ejemplos. Este detalle est ms detalladamente explicado en el vdeo que encontrars al
final del artculo.
Por ltimo tienes "data", al que le estamos asignando un valor por binding: {{misdatos}}. Ese valor es
importante porque ser donde dentro del componente tendrs acceso a los datos que te traiga el firebasedocument.
Nota: Fjate que hacemos el binding con dos llaves, porque queremos que sea en dos direcciones, como
antes hemos especificado. Recuerda que en el Manual de Polymer tienes ms informacin sobre el
binding.
Pgina 63 de 78
Manual de Firebase
Vamos a suponer que el documento que te has trado tiene una propiedad llamada "mipropiedad" y que la
quieres meter dentro de un prrafo.
<p>Este es el dato que quiero mostrar [[misdatos.mipropiedad]]</p>
Nota: Ten en cuenta que los mecanismos de binding en Polymer solo se dan si ests dentro de un
componente o bien, si no ests en un componente, usando el "template autobind" aka "template dombind":
<template is="dom-bind">
Aqu s se produce binding!!
</template>
Este primer ejercicio con Polymerfire no tiene mucho ms. No hemos visto el cdigo completo, porque
estamos seguros que con tus conocimientos en Polymer sers capaz de unir las piezas. Si no es as,
simplemente mira este vdeo en el que vers mucha informacin que te aclarar diversos puntos que puedan
estar poco claros para ti.
Pgina 64 de 78
Manual de Firebase
Nota: Para quien ya conozca los antiguos componentes de Firebase en versin 2.x, el componente
firebase-query actual sustituye al antiguo firebase-collection.
Componente firebase-query
El componente firebase-query se encarga de hacer todo el trabajo de ir hasta Firebase para recoger un
conjunto de datos, proporcionarlos en una aplicacin Polymer y mantenerlos sincronizados con la base de
datos remota. En caso que se modifiquen los datos en local los expone en la base de datos de Firebase y,
por su puesto, si se modifican en Firebase se actualizan en la parte de Polymer.
Para ello, de manera declarativa, configuramos el componente indicando la aplicacin que vamos a usar, as
como el lugar donde est la coleccin de elementos dentro de la base de datos de Firebase. Una vez
recibidos los datos, el componente nos los ofrecer en una de sus propiedades.
<firebase-query
app-name="testpf"
path="/contactos"
data="{{contactos}}">
</firebase-query>
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 65 de 78
Manual de Firebase
Nota: Ten muy en cuenta las reglas de seguridad, que nos dicen quin puede acceder a la informacin y
bajo qu condiciones. En las reglas de seguridad predeterminadas no se permite acceso a datos si no es
por un usuario autenticado. Tenlo en cuenta, autenticando usuarios o modificando las reglas para que
los ejemplos te funcionen correctamente.
Bsicamente tenemos el array "contactos" que es el que se usa como fuente para generar la repeticin.
Dentro del template, que se repetir para cada contacto del array, conoceremos al elemento actual con la
variable "contacto". No vamos a entrar mucho ms en este tipo de estructuras ya que son materia del
Manual de Polymer.
Pgina 66 de 78
Manual de Firebase
Ese objeto lo agregars a travs de la funcin push(), que depende de una referencia a la base de datos de
Firebase. Tal referencia la puedes obtener a partir del componente, por su propiedad "ref".
Lo ms cmodo es que coloques un identificador al componente, para luego poder acceder al componente
para cualquier operacin:
<firebase-query
id="firebaseq"
app-name="testpf"
path="/contactos"
data="{{contactos}}">
</firebase-query>
Nota: De momento, para acceso al SDK de Firebase no vemos mtodos ayudantes, en la versin actual
del componente firebase-query. Tenemos que partir de la referencia mencionada y despus usar ya el
SDK nativo de Firebase para Javascript.
Este artculo es obra de Miguel Angel Alvarez
Fue publicado por primera vez en 02/09/2016
Disponible online en http://desarrolloweb.com/articulos/componente-firebase-query-polymerfire.html
Componente firebase-auth
El componente de Polymerfire que nos provee del servicio de autenticacin de usuarios en
aplicaciones Firebase y Polymer.
Despus de haber abordado en artculos anteriores los componentes de acceso a datos de Firebase para
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 67 de 78
Manual de Firebase
aplicaciones Polymer, ahora nos vamos a detener en el componente de autenticacin de usuarios, que es un
poco ms complejo que los anteriores.
El componente de autenticacin nos permite de una manera declarativa configurar el sistema de
autenticacin de usuarios de Firebase, pudiendo autenticar por diversos medios, como usuario/clave, de
forma annima y por medio de usuarios de diversas redes sociales. Y lo hace a muy alto nivel, sin que nos
tengamos que ocupar de la mayora de las situaciones relativas a la seguridad.
Podramos usar el componente firebase-auth con una nica lnea de cdigo, permitiendo autenticacin
solamente con escribir unas pocas propiedades en atributos de una etiqueta HTML y una invocacin a un
mtodo Javascript, lo que es realmente asombroso. Aunque para ciertos usos, como autenticar con
password, s que necesitaremos usar algo ms de cdigo.
Nota: Recuerda que antes de usar el componente firebase-auth debes haber configurado tu aplicacin
usando el elemento firebase-app. Encontrars ms informacin en la introduccin a Polymerfire.
Mtodos de autenticacin
En Firebase existen diversos mtodos de autenticacin posibles:
Annima
Por usuario y clave
Por usuarios de redes sociales: Google, Facebook, Twitter, Github
Suponemos que ests familiarizado con esto, ya que ha sido objeto de estudio en el Manual de Firebase. Lo
que no podemos dejar de remarcar es que hay que activar en la consola de Firebase cada uno de los
mecanismos que queramos permitir en nuestra app.
Al iniciarse una aplicacin Firebase no est activo ningn mecanismo de autenticacin, por lo que tendrs
que comenzar por ah. Simplemente se trata de entrar en la consola de Firebase y habilitar el / los que
desees.
Adems, en el caso del login por redes sociales, oAuth, tendrs que configurar algunas informaciones en la
consola. Sobre esto ya hemos visto alguna cosa en el artculo de Autenticacin de usuarios con redes
sociales en Firebase.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 68 de 78
Manual de Firebase
Nota: Una novedad en la recin publicada versin de Firebase (la 3) es que, gracias a la integracin con
Google, no es necesario configurar nada para poder usar este proveedor de login. Simplemente tenemos
que habilitarlo, como cualquier otro mecanismo de autenticacin, pero la parte de configuracin de la
API Key de oAuth, llave secreta o url de callback no hace ya falta introducirla, lo que lo hace un
mecanismo muy cmodo para usar en cualquier aplicacin sin necesidad de ms configuraciones.
Pgina 69 de 78
Manual de Firebase
propiedad del componente, que luego podrs usar para saber si hay o no un usuario correcto activo.
user: este es el objeto con todos los datos de usuario a los que accedes cuando hay uno logueado en tu
aplicacin. A travs de ese objeto podrs acceder al identificador de usuario as como datos que te exponga
la red social con la que ests conectando. Como con signed-in, lo normal es que lo bindees a una propiedad.
Nota: Estamos suponiendo que tu componente firebase-auth tiene el id="fauth", como en los ejemplos
anteriores, pero obviamente en tu aplicacin podrs usar cualquier otro identificador.
Nota: Obviamente el mtodo no "vive" solo, necesitas acceder a l a travs del objeto del elemento
firebase-auth, como hemos visto antes en el ejemplo de autenticacin annima.
Para el caso de autenticacin con oAuth, usando los usuarios de redes sociales, tendrs dos posibilidades.
Login con un popup y login por redirect. Estos dos mecanismos producen el mismo resultado, pero uno
usa redirecciones para autenticar en la red social mientras que el otro usa una ventana emergente. Ya se
explicaron las diferencias en el artculo de autenticacin con conectores sociales.
Recuerda, no obstante, que la definicin de la red social a usar la realizas con la propiedad "provider" del
componente, como hemos visto antes. Aunque tambin lo puedes expresar mediante un parmetro
opcional indicado en la funcin que lanza el proceso de autenticacin.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 70 de 78
Manual de Firebase
signInWithPopup(provider)
signInWithRedirect(provider)
Nota: Realmente no ests obligado a usarlas, puesto que cuando se produce la autenticacin, por los
mecanismos de binding ya puedes saber que se han producido cambios en la autenticacin, por ejemplo
mediante la propiedad "signed-in" o el propio objeto de usuario, de los que hemos hablado antes.
En el caso negativo recibes un objeto de error, desde el que podrs obtener informacin que presentar al
usuario. En el caso positivo recibes un objeto desde el que podrs obtener informacin del usuario que se
acaba de autenticar.
this.$.fauth.signInWithPopup()
.then(function(respuesta) {
console.log('entr', respuesta.user);
})
.catch(function(error) {
console.log('error' + error);
});
Con esto ya tienes todo lo que necesitas saber para comenzar a autenticar usuarios en aplicaciones Firebase
+ Polymer usando los componentes Polymerfire. Ahora solo queda disfrutar de tu tiempo, porque
realmente todo el trabajo pesado ya lo tienes hecho.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 71 de 78
Manual de Firebase
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 72 de 78
Manual de Firebase
Java Vs Node
Existen dos lenguajes que podemos escoger actualmente para hacer esta actividad: Java o NodeJS. Ambos
permiten las mismas operativas, usando SDKs distintos. En principio es indiferente cul de los lenguajes
usar, aunque quizs la eleccin depende de:
Si ests familiarizado con Javascript o el desarrollo web en general tendr ms sentido escoger
NodeJS, pues el SDK es exactamente el mismo que usas para el Javascript del lado del cliente.
Si ests ms familiarizado con el desarrollo web en Java, o el desarrollo de apps nativas para
Android, quizs te interese ms Java.
Insistimos que la eleccin depender ms de costumbres y preferencias. En cuanto a requisitos del servidor
y esas cosas, quizs con Java la configuracin de la mquina pueda ser un poco ms compleja pero si
conoces Java no ser un problema para ti.
Nota: Cuando mencionamos un "servidor", obviamente, puede ser cualquier ordenador conectado a
Internet que tenga instalados los correspondientes lenguajes. Para desarrollo usars tu propio ordenador
en local, pero en produccin generalmente ser un servidor contratado. Como alojamientos compartidos
que soporten Java o NodeJS hay pocos, quizs querrs contratar un servidor cloud o VPS para instalar
tus aplicaciones necesarias y configurarlas a tu gusto.
Nota: Debes tener en cuenta que este mtodo de acceso a Firebase desde el servidor te dar privilegios
totales contra Firebase. Esto debes usarlo solo en un entorno de backend seguro. Si lo que ests
queriendo hacer es uso del backend para un conjunto de funcionalidades limitadas a las que accedern
usuarios comunes de tu aplicacin, entonces debes iniciar Firebase con el mismo procedimiento con el
que inicias del lado del frontend.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 73 de 78
Manual de Firebase
Nota: Por si no lo sabes, la opcin --save sirve para que guarde la dependencia en el archivo
package.json. Ese archivo tiene que estar creado previamente, algo que se hace con el comando "npm
init" y respondiendo la serie de preguntas del asistente que nos aparece.
Nota: Si no ests familiarizado con el desarrollo de NodeJS, por favor lee los primeros artculos del
Manual de NodeJS.
Aparecers en la consola de los servicios de Google Cloud. All tienes que irte a la parte de la izquierda,
donde pone "Cuentas de servicio" y luego en "Crear cuenta de servicio"
En el formulario que encuentras tienes que asignar un nombre a la cuenta de servicio, decirle que suministre
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 74 de 78
Manual de Firebase
Otra operacin que debes realizar es darle permisos al 'service account', al menos de editor de proyecto, en
el desplegable de la siguiente imagen.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 75 de 78
Manual de Firebase
Pulsamos entonces el botn de "Crear" y habremos terminado la configuracin en la consola, para permitir
acceso desde nuestras aplicaciones del lado del servidor. El JSON con la nueva llave y otros datos de
configuracin de Firebase, se descargar automticamente mediante el propio navegador. Lo tendrs que
copiar en la carpeta de tu proyecto.
2.- Inicializar la aplicacin Firebase, ya con Cdigo NodeJS. Esto requiere que crees un archivo
"index.js" (o el nombre que prefieras) y comiences a codificar la inicializacin de la aplicacin NodeJS,
necesaria para comenzar a trabajar con Firebase.
Lo primero que querrs hacer es el require de la librera "firebase-admin".
var firebase = require('firebase-admin');
Eso lo que hace es poner disponible desde nuestro script Node la librera de Firebase para administrador
desde un servidor Backend. A continuacin colocars el cdigo para traerte el JSON que has descargado
desde Firebase, al crear el "Service Account".
var serviceAccount = require("./TuProyecto-6g5f351ac7ec.json");
Ojo en el cdigo anterior, porque en el campo "ServiceAccount" tendrs que colocar la ruta al JSON
descargado anteriormente (que has copiado en la carpeta de tu proyecto). En mi caso la ruta es simplemente
"./" seguido del nombre del archivo, porque tanto mi script .js como el json descargado estn en la misma
carpeta). Tambin tendrs que poner la URL de tu propia base de datos de Firebase y no la ma.
A continuacin inicializas la aplicacin con las credenciales del Service Account descargado.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 76 de 78
Manual de Firebase
firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount),
databaseURL: "https://projetopensar-f73e8.firebaseio.com"
});
Para ejecutar ese archivo te diriges a la carpeta de tu proyecto desde el terminal y lanzas el comando "node"
seguido del nombre del archivo donde has colocado el script (ver luego el cdigo completo si tienes dudas).
cd mi/proyecto
node index
Nota: Como debes saber, al invocar desde consola un programa escrito en NodeJS no necesitas indicar
su extensin .js. Si lo indicas no pasa nada y por supuesto funciona tambin.
Entonces vers los datos que tengas en la coleccin "users", o aquella que hayas colocado en el cdigo, y el
nuevo objeto generado en cada nueva insercin. La salida, que obtienes en el terminal de lnea de
comandos, sera algo como esto:
{ nombre: 'Miguel Angel Alvarez Snchez' }
iduser1
{ name: 'user desarrolloweb.com' }
otro
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 77 de 78
Manual de Firebase
El script de nodejs se ejecuta por tiempo ilimitado, escuchando siempre los eventos de Firebase que se
vayan produciendo. Puedes salir del script desde tu consola con CTRL + C.
Con esto lo tienes todo! has conseguido conectar Firebase desde el servidor. Es el primer paso para hacer
cualquier cosa que necesites y no puedas delegar en la parte de frontend.
http://desarrolloweb.com/manuales/manual-firebase.html
Pgina 78 de 78