La moderación automatizada de imágenes en Firebase es más simple cuando el flujo está claro: desplegar la función, habilitar Vision API con facturación y probar el ciclo completo desde la carga en Cloud Storage hasta la notificación. Aquí verás cómo se corrigió un detalle crítico, se activaron servicios en Google Cloud y se validó el comportamiento con ejemplos reales.
¿Cómo preparar y desplegar una función de Firebase con Cloud Storage y Vision API?
Para evitar fallos al iniciar, se corrigió un error común: storage no es una propiedad, sino una función. La solución fue llamar correctamente a la API.
// Corrección clave:storage();// usar paréntesis.
Luego, se procedió al despliegue con el comando de Firebase mientras se habilitaba la infraestructura necesaria.
Ejecutar el despliegue de funciones.
firebase deploy --only functions
Activar el plan de pago por uso en Firebase. Implica seleccionar una cuenta de facturación y registrar tarjeta de crédito. Hay parte gratuita, pero se requiere habilitar pago para usar Vision API.
Abrir Google Cloud: console.cloud.google.com.
Verificar el proyecto correcto: coincide con el nombre creado por Firebase en Google Cloud.
Ir a APIs y servicios > biblioteca.
Buscar y habilitar Vision API. Permite consumir detecciones para moderación de imágenes.
Si el despliegue muestra errores de red como Connect timeout, reintentar el comando suele resolverlo.
¿Cómo probar la moderación de imágenes y validar el flujo end-to-end?
La función llamada “Validar image” se dispara con el evento de Cloud Storage. Se probó creando publicaciones y subiendo imágenes para observar la validación y la notificación.
Crear un post “test” con una URL de video y subir una imagen apropiada.
Recibir notificación: “ya tenemos un nuevo post. Revísalo. Se llama test.”. Indica que el flujo se ejecutó.
Revisar Functions en la consola de Firebase: la función aparece desplegada y activa.
Ver registros: mensajes como “mensaje enviado correctamente” y “enviar notificación al tópico” confirman que el envío a FCM funcionó.
Validar Cloud Storage: se crea un directorio con el UID del usuario y se almacena la imagen subida.
Comprobar base de datos: existe el post con el campo de token y publicado: true cuando la imagen es permitida.
Para un caso de contenido restringido se repitió la prueba con “test dos” usando una imagen violenta.
Aparece el aviso: “tu post no se puede mostrar, ya que la imagen no es permitida.”.
El post no se lista en la interfaz, y en la base de datos queda publicado: false.
En Storage se observan las dos imágenes: la permitida y la marcada como inapropiada.
Este flujo confirma que la función modera contenido, actualiza el estado del post y notifica según corresponda.
¿Qué errores, registros y buenas prácticas considerar en el despliegue?
Precisar los puntos críticos ayuda a mantener el sistema estable y confiable.
Corrección de API: usar storage() con paréntesis evita fallos en la inicialización.
Errores de red: Connect timeout puede ocurrir. Reintentar el despliegue.
Costos y habilitación: Vision API requiere facturación activa. Existe cuota gratuita, pero el uso intensivo puede generar cobros.
Observabilidad: revisar registros en Functions para confirmar eventos como “enviar notificación” y “mensaje enviado correctamente”.
Disparadores adecuados: el icono en Functions indica el evento de Cloud Storage como origen del disparo.
Datos del post: campos como token y publicado guían el envío de mensajes y la visibilidad del contenido.
Organización en Storage: carpetas por UID del usuario facilitan trazabilidad y auditoría de archivos.
¿Quieres llevarlo más allá? El reto propuesto: usa otras propiedades de Vision API para validar si la imagen contiene contenido tecnológico o de noticias. Cuéntame en los comentarios cómo lo implementarías y qué criterios usarías para marcar cada categoría.
Buenas! Se ve que en el curso de Firebase WEB (que se arma el Front que estas usando), quedaron desactualizados algunos métodos.
En el que estas usando, tiene cosas como en el crearPost ( agregas los fields Token y Publicado)
También se nota que cuando haces el uploadImage usas como nombre de la imagen el doc de la collection
todo eso en el curso WEB no aparece, ya que usas el file.name del obj de la imagen
Donde se puede ver los files del Front actualizados??
Creo que en el repositorio tampoco lo tiene actualizado.
😅 Es necesario actualizar (pagar) nuestro plan de Firebase para utilizar paquetes de NPM o consultar APIs externas, es decir, para utilizar y ejecutar código que no --necesariamente-- estamos escribiendo en nuestras funciones de Firebase 😱.
Firebase Pricing
Me pareció súper económico el plan de pago por uso, va incluido el plan free, o sea, si se pasa del límite del plan free, ahí si te empiezan a cobrar por el uso.
Genial
Video de como disminuir el tamaño de las imagenes con Cloud functions, generar imagenes de diferentes resoluciones
_Nota: tenga en cuenta la version de las librerias de minificación, que sean las mismas. _