RSS Feed · 4 min read · Sep 13, 2025
Cómo Configurar Una Aplicación Lectora de RSS de Facebook Para Tu Blog - Página 5
7 Actualizar Automáticamente El RSS En El Perfil
Puede que hayas notado que el RSS en el perfil solo se actualiza cuando visitas la página de la aplicación en Facebook. Este es un problema porque las personas pasan la mayor parte de su tiempo en la página de perfil. Para actualizar automáticamente el RSS en la página de perfil, debemos crear un trabajo cron en nuestro servidor que actualice automáticamente el RSS en los perfiles de Facebook.
Hay dos formas de actualizar perfiles: directa e indirecta (ver http://wiki.developers.facebook.com/index.php/Changing_profile_content). Si tu contenido es individual para cada usuario, debes usar el método directo, pero si es el mismo para todos los usuarios, es mucho más fácil usar la forma indirecta. Debido a que nuestro RSS es el mismo para todos los usuarios, usamos la forma indirecta, para la cual necesitamos una clave de sesión infinita para nuestra aplicación para que el trabajo cron pueda iniciar sesión en Facebook en cualquier momento.
Para averiguar nuestra clave de sesión infinita, creamos el script get_infinite_key.php, como se muestra en http://wiki.developers.facebook.com/index.php/Infinite_session_howto:
vi /var/www/fb/htf_feed_reader/get_infinite_key.php| require_frame(); $user = $facebook->require_login(); // Imprimir la "clave de sesión infinita" de la que todos hablan. echo $facebook->api_client->session_key; ?> |
Ahora cierra sesión de Facebook en tu navegador y borra todas las cookies, o mejor aún, usa otro navegador en el que nunca hayas visitado Facebook antes (mi navegador predeterminado es Firefox, así que uso SeaMonkey para esto), y llama a ese script en tu navegador (por ejemplo, http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).
Se te pedirá que inicies sesión en Facebook. Asegúrate de marcar la casilla Guardar mi información de inicio de sesión para evitar iniciar sesión en Facebook nuevamente para usar esta aplicación:

Después, debería aparecer una página mostrando la clave de sesión infinita de tu aplicación. Por favor, anótala en algún lugar:

Elimina get_infinite_key.php después:
rm -f /var/www/fb/htf_feed_reader/get_infinite_key.phpEn el script del trabajo cron que usaré aquí, usaré la función $facebook->api_client->fbml_refreshRefUrl() para llamar a una URL que entrega el HTML/FBML que se pondrá en las páginas de perfil. Esta URL debería entregar nada más que el código HTML/FBML; nuestro script index.php entrega código HTML/FBML (para la página de lienzo de la aplicación en Facebook, usando la línea echo $fbml;), pero también cambia los perfiles de los usuarios con la función $facebook->api_client->profile_setFBML(), para la cual necesitaríamos los IDs de usuario de cada usuario que ha instalado nuestra aplicación si la usáramos en nuestro script del trabajo cron. No tenemos estos IDs de usuario porque no los rastreamos con nuestra aplicación, y como dije antes, queremos usar el método indirecto para actualizar los perfiles.
Por lo tanto, pondré el código para analizar el RSS y mostrar el HTML/FBML en un script separado, rss.php, que llamaré tanto en index.php como en nuestro script del trabajo cron, cronjob.php. Además, crearé un archivo de configuración (conf.php) para nuestra aplicación que contenga todas las configuraciones de variables y que se incluya en todos los demás scripts.
Así que empecemos:
vi /var/www/fb/htf_feed_reader/conf.php| |
$feed es la URL de nuestro RSS, y $rss_url es la URL de nuestro archivo (aún por crear) rss.php. Por favor, no mezcles estas dos.
Ahora que usamos conf.php, nuestro nuevo appinclude.php se ve así:
vi /var/www/fb/htf_feed_reader/appinclude.php| require_login(); //capturar la excepción que se lanza si la cookie tiene una session_key inválida en ella try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { //esto borrará las cookies para tu aplicación y los redirigirá a un aviso de inicio de sesión $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |
index.php se ve así:
vi /var/www/fb/htf_feed_reader/index.php| api_client->profile_setFBML(' |
rss.php se ve así (he desactivado la caché de RSS para MagpieRSS aquí, pero puedes activarla si lo deseas):
vi /var/www/fb/htf_feed_reader/rss.php| Lector de RSS de HowtoForge |
'; foreach ($rss->items as $item) { $fbml .= ''.$rss->channel['title'].'
'; if($item['description']) $fbml .= $item['description']; $fbml .= '
Y finalmente, cronjob.php se ve así:
vi /var/www/fb/htf_feed_reader/cronjob.php| api_client->session_key = $infinite_session_key; // Ahora puedes actualizar páginas FBML, actualizar tus etiquetas fb:ref, etc. $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |
Ahora puedes llamar directamente a cronjob.php en tu navegador (por ejemplo, http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php) para probar si tu RSS se actualiza en tu perfil de Facebook (por supuesto, tu RSS debe ser diferente al anterior…).
Si todo funciona como se espera, puedes crear un trabajo cron que llame a cronjob.php cada 30 minutos (o tan a menudo como desees):
crontab -e| 0,30 * * * * /usr/bin/wget -O /dev/null http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php &> /dev/null |
A partir de ahora, los perfiles de los usuarios de Facebook que han instalado tu aplicación lectora de RSS se actualizarán automáticamente.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.