Protección del feed — Clave secreta y Basic Auth del generador
El módulo utiliza dos mecanismos de protección independientes: una clave secreta que controla quién puede iniciar la generación del feed, y credenciales HTTP Basic Auth que permiten al generador superar una contraseña .htaccess de nivel de servidor en tu sitio.
Disponible desde la v2.4.5
Descripción general
La generación del feed se activa mediante una petición HTTP al front end de tu tienda (/module/facebookproductsfeed/GenerateFeed). Sin ninguna protección, cualquier persona que conozca esa URL podría iniciar una generación en cualquier momento, consumiendo recursos del servidor. La clave secreta evita esto exigiendo un token coincidente en la URL antes de que el módulo realice cualquier acción.
Por otro lado, muchas configuraciones de alojamiento — especialmente los entornos de staging y algunos servidores compartidos — protegen todo el sitio o rutas equivalentes a wp-admin con HTTP Basic Authentication vía .htaccess. Cuando el módulo realiza su llamada cURL interna para continuar un ciclo, esa petición cURL choca contra la misma barrera .htaccess y falla silenciosamente. Las credenciales de Basic Auth del generador indican al módulo qué nombre de usuario y contraseña debe incluir en esas peticiones cURL internas para que puedan atravesarla.
Estas son dos configuraciones independientes que resuelven dos problemas distintos.
La clave secreta
La clave secreta es un token derivado de _COOKIE_KEY_ de tu tienda y del nombre del módulo. Se almacena globalmente (FPF_SECRET_KEY) y debe estar presente como parámetro de URL (fpf_secret_key) para que cualquier solicitud de generación por web pueda ejecutarse.
El controlador del generador lo comprueba al inicio:
?fpf_secret_key=<valor>
Si el valor falta o es incorrecto, el controlador finaliza de inmediato sin producir ninguna salida. La generación por CLI (cron mediante PHP CLI) omite esta comprobación por completo — la clave solo es necesaria para las peticiones web.
El módulo incluye automáticamente la clave secreta en todas las URLs que te muestra: la URL del cron en la pestaña Cron Jobs, la URL de consola en la pestaña Dashboard, y la URL que el generador usa internamente para la continuación de ciclos. No necesitas buscar ni copiar la clave manualmente.
Restablecer la clave secreta
Si sospechas que tu URL de generación ha quedado expuesta o quieres rotar la clave, puedes regenerarla visitando la URL de tu Back Office con fpf_reset_secret=1 añadido al final:
https://yourstore.com/admin/index.php?controller=AdminModules&configure=facebookproductsfeed&fpf_reset_secret=1
El módulo regenera la clave a partir de md5(_COOKIE_KEY_ . 'facebookproductsfeed') y almacena el resultado globalmente. Tras el restablecimiento, cualquier URL de cron que hayas configurado en tu servidor dejará de funcionar — deberás copiar la nueva URL del cron desde la pestaña Cron Jobs y actualizar la entrada de cron en tu servidor.
La clave secreta se almacena como un valor de configuración global de PrestaShop, lo que significa que se aplica a todas las tiendas en una configuración multitienda. Restablecerla invalida las URLs de cron existentes para todas las tiendas al mismo tiempo.
Basic Auth del generador
Esta sección se encuentra en la pestaña Feed Protection (#fieldset_security), bajo el encabezado Basic Auth for generation.
| Campo | Descripción |
|---|---|
| Basic Auth Username | El nombre de usuario HTTP Basic Auth que el módulo envía en las peticiones cURL internas durante la generación de ciclos |
| Basic Auth Password | La contraseña correspondiente. Una vez guardada, el campo muestra un indicador en lugar del valor — la contraseña no vuelve a mostrarse |
Cuando ambos campos están rellenos, cada llamada cURL interna del generador incluye una cabecera Authorization: Basic .... Esto permite que la continuación de ciclos funcione correctamente en servidores que requieren credenciales para acceder al front office.
Para eliminar las credenciales de Basic Auth, vacía el campo Basic Auth Password y guarda. Cuando el campo de contraseña está vacío al guardar, el módulo borra tanto el nombre de usuario como la contraseña.
Estas credenciales son exclusivamente para las peticiones cURL internas del módulo. No están relacionadas con el interruptor ¿Proteger la URL de los feeds? descrito más adelante, que controla el acceso a los archivos XML del feed ya generados.

Protección de la URL del feed (relacionado)
La pestaña Feed Protection también contiene un interruptor independiente ¿Proteger la URL de los feeds? (FPF_SECURITY). Cuando se activa con un nombre de usuario y contraseña, el módulo escribe un archivo .htaccess y .htpasswd en la carpeta feeds/, exigiendo credenciales HTTP Basic Auth para descargar los archivos XML del feed.
Esta es una capa de protección distinta — restringe quién puede leer los archivos del feed ya generados, no quién puede iniciar la generación. Facebook Commerce Manager necesita poder acceder a la URL del feed, por lo que si activas la protección de URL del feed también deberás proporcionar esas credenciales a Facebook al configurar tu catálogo.
| Clave de config | Valor predeterminado | Propósito |
|---|---|---|
FPF_SECURITY | Desactivado | Si la carpeta feeds/ requiere HTTP Basic Auth |
FPF_SECURITY_USER | — | Nombre de usuario para el acceso a los archivos del feed |
FPF_SECURITY_PASS | — | Contraseña para el acceso a los archivos del feed |
FPF_BASIC_AUTH_USERNAME | — | Nombre de usuario para las peticiones cURL internas del módulo |
FPF_BASIC_AUTH_PASSWORD | — | Contraseña para las peticiones cURL internas del módulo |
FPF_SECRET_KEY | Generado automáticamente | Token requerido en la URL de generación |
Notas importantes
- La clave secreta no se almacena por tienda — es un valor global. En configuraciones multitienda, todas las tiendas comparten la misma clave y el mismo formato de URL de generación.
- Restablecer la clave secreta no afecta al acceso a los archivos del feed (FPF_SECURITY), solo a la capacidad de iniciar la generación.
- Las credenciales de Basic Auth para el generador se almacenan por tienda (usando
Configuration::geten lugar deConfiguration::getGlobalValue), por lo que distintas tiendas pueden tener credenciales diferentes. - La clave secreta se genera una vez al instalar el módulo. Solo cambia si la restableces explícitamente mediante
?fpf_reset_secret=1o si reinstales el módulo.
Solución de problemas
| Problema | Solución |
|---|---|
| El cron dejó de funcionar tras restablecer la clave secreta | Copia la nueva URL del cron desde la pestaña Cron Jobs y actualiza la entrada de cron en tu servidor |
| La generación del feed comienza pero se detiene después del primer ciclo | Tu servidor tiene protección HTTP Basic Auth vía .htaccess. Rellena Basic Auth Username y Basic Auth Password en la pestaña Feed Protection para que el generador pueda continuar los ciclos |
| "No puedes acceder a esta página" al visitar la URL de generación | El parámetro fpf_secret_key en la URL falta o está desactualizado. Copia la URL correcta desde la pestaña Cron Jobs |
| La URL del feed devuelve 401 a Facebook | La protección de URL del feed (FPF_SECURITY) está activada. Proporciona esas credenciales a Facebook Commerce Manager al configurar el catálogo |
| Al guardar la contraseña de Basic Auth aparece el indicador "contraseña establecida" pero la generación sigue fallando con error de autenticación | Confirma que las credenciales coinciden con lo que espera tu servidor — prueba con curl -u username:password <url-de-generacion> desde tu terminal |
Preguntas frecuentes
¿Necesito configurar alguna protección?
La clave secreta siempre está activa y se genera automáticamente — no necesitas configurar nada para una protección básica. La Basic Auth del generador solo es necesaria si tu entorno de alojamiento requiere credenciales HTTP para acceder al front office.
¿Dónde encuentro la URL de generación actual con la clave secreta?
Ve a la pestaña Cron Jobs. El módulo muestra la URL de generación completa incluyendo el parámetro fpf_secret_key. Cópiala desde ahí en lugar de intentar construirla manualmente.
Restablecí la clave secreta y ahora mi cron no hace nada. ¿Qué ocurrió?
El valor fpf_secret_key de la URL antigua ya no coincide con lo que espera el módulo, por lo que cada petición es rechazada silenciosamente. Ve a la pestaña Cron Jobs, copia la nueva URL y actualiza la entrada de cron en tu servidor.
¿Cuál es la diferencia entre los campos de Basic Auth y el interruptor '¿Proteger la URL de los feeds?'?
Los campos Basic Auth Username/Password son credenciales que el módulo envía en sus propias peticiones cURL salientes para que la generación de ciclos pueda continuar a través de una barrera de autenticación de nivel de servidor. El interruptor Proteger la URL de los feeds crea su propia barrera de autenticación alrededor de los archivos XML del feed ya generados, de modo que los visitantes externos necesitan credenciales para descargarlos. Son funciones independientes.
¿Puedo usar las mismas credenciales tanto para la Basic Auth del generador como para la protección de URL del feed?
Sí, si tu servidor ya requiere autenticación para todas las peticiones, tiene sentido usar las mismas credenciales para ambas configuraciones. Los dos ajustes se almacenan por separado y pueden ser distintos si es necesario.
¿Restablecer la clave secreta afecta a alguna tienda diferente a la actual?
Sí. La clave secreta se almacena globalmente, por lo que restablecerla invalida las URLs de cron de todas las tiendas de tu configuración multitienda simultáneamente. Actualiza todos los cron jobs tras un restablecimiento.