Cómo utilizar Firebase desde un servidor con NodeJS para administrar apps
Desarrollada por Google, Firebase es una solución para crear apps que ahorra mucho trabajo a los desarrolladores a la hora de programar piezas fundamentales de cualquier aplicación, como la autenticación, el desarrollo de determinadas responsabilidades del backend, como la base de datos, etc. En este articulo, explicamos cómo hacer uso de Firebase desde un servidor con NodeJS para llevar a cabo esas tareas.
La mejor característica de Firebase es que está orientado al trabajo frontend, permitiendo bajo un único SDK de Javascript del lado del cliente realizar muchas de las tareas que corresponden al backend. Sin embargo, las reglas del negocio de las aplicaciones en general no siempre permiten que todo tipo de operaciones, validaciones, acceso a otras API, se realicen desde el frontend. Por ello, en la práctica y para aplicaciones profesionales que pasen de ser meros prototipos, siempre vamos a tener que acudir a la programación backend para realizar ciertas partes. Esto no es problema, ya que el mismo SDK de Javascript, con adicionales funcionalidades de administración, se puede ejecutar en NodeJS o Java del lado del servidor.
En resumen, siempre nos interesará contar con un Servidor Cloud, VPS o Dedicado provisionado en Arsys para conectarse a Firebase y tener nuestro worker realizando las tareas de administración que requieran mayores prestaciones de seguridad, o las cosas que simplemente no se pueden hacer desde Javascript del lado del cliente.
Configurar nuestro servidor con NodeJS
Los dos lenguajes que tenemos disponibles para realizar el Worker del lado del servidor son NodeJS y Java. Elegimos Node por ser simplemente Javascript, un lenguaje con el que seguro que hay más desarrolladores familiarizados.
El primer paso sería entonces instalar NodeJS en el servidor. Si tenemos un Servidor Cloud, podemos hacerlo en un par de clics desde el Catálogo de Aplicaciones o desde el Panel de Control de Cloudbuilder Next, como vimos en el artículo NodeJS, un polivalente framewok que podemos llevar muy fácilmente a Cloud.
Si optamos por otro servicio, podemos seguir los pasos que encontramos en la propia página de Node.
Luego tenemos que instalar el paquete npm para trabajar con Firebase estando en la carpeta de nuestro proyecto.
npm install firebase-admin --save
Acreditar al servidor Node para administración
El siguiente paso es bajarse las credenciales de administración para el servidor. Esta parte se hace desde la consola de Firebase, mediante el enlace Cuentas de servicio que encontramos en la configuración del proyecto.
Un poco más abajo encontramos el botón para descargar el JSON de configuración de nuestro servidor en modo admin. Generar nueva clave privada.
Con ese archivo ya podemos conectar con Firebase en modo administración. Lo conseguimos con el siguiente código NodeJS.
var admin = require('firebase-admin'); admin.initializeApp({ credential: admin.credential.cert('aqui-debe-colocarse-tu-llave-admin-key.json'), databaseURL: 'https://nombre-de-tu-aplicacion.firebaseio.com' });
Este código lo puedes localizar en la misma página donde descargaste el JSON. Tienes que personalizarlo con el nombre de tu aplicación y la ruta de la llave que acabas de descargar.
Acceso de Administrador
El acceso como Administrador permite disponer de privilegios totales para el acceso a diversos servicios de Firebase como la base de datos en tiempo real, con la característica de permitir todo tipo de acciones, independientemente de lo que se haya definido en las Firebase Database Rules.
Usaremos el siguiente código para acceder a los datos:
var database = admin.database(); var ref = database.ref('referencia/de/documento/inaccesible/con/Javascrip/en/el/cliente'); ref.once('value', function(snapshot) { console.log('El dato es', snapshot.val()); });
Este es uno de los diferentes servicios de Firebase. Desde la administración podremos acceder a otros como la base de datos de los usuarios, el sistema de mensajería para notificaciones push o la autenticación personalizada (custom) para usar nuestra propia base de datos de usuarios registradas en una aplicación ya existente.