Solución: Error de Firebase al denegar la lectura de la base de datos (Reglas de seguridad)
El Diagnóstico Rápido
El error Firebase Error: [code=permission-denied] ocurre cuando tu aplicación frontend (web o móvil) intenta leer, escribir o actualizar datos en Cloud Firestore o Realtime Database, pero el servidor de Firebase rechaza la solicitud porque las Reglas de Seguridad (Security Rules) del proyecto no otorgan los permisos necesarios.
Este fallo es sumamente común al pasar un proyecto de la etapa de desarrollo local a producción, o cuando expira el periodo de gracia del "Modo de prueba" (que suele durar 30 días).
🚀 Cómo solucionar el error paso a paso
Paso 1: Identificar el entorno de base de datos
Entra a tu consola de Firebase, selecciona tu proyecto y dirígete al apartado de Cloud Firestore o Realtime Database en el menú izquierdo, luego haz clic en la pestaña Rules (Reglas).
Paso 2: Configurar reglas seguras (Para Firestore)
Si tu base de datos estaba en modo de prueba, verás una regla que bloqueaba el acceso tras una fecha específica. Jamás uses reglas que permitan la lectura y escritura pública global (allow read, write: if true;) en producción, ya que cualquiera podría borrar tu base de datos.
Implementa una estructura condicional que exija que el usuario esté autenticado para poder modificar datos:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Permitir a cualquier usuario web leer el catálogo de productos o contenido público
match /public_content/{document} {
allow read: if true;
allow write: if request.auth != null; // Solo usuarios registrados escriben
}
// Restringir colecciones privadas de usuarios (ej. carritos, pedidos, datos personales)
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Paso 3: Publicar cambios
Haz clic en el botón Publish (Publicar) en la consola de Firebase. Los cambios en las reglas toman entre 1 y 2 minutos en propagarse globalmente. Reinicia tu aplicación cliente y los errores de permisos desaparecerán.