RSS Feed · 4 min read · Sep 13, 2025
Comment configurer une application de lecteur RSS Facebook pour votre blog - Page 5
7 Mettre à jour automatiquement le flux RSS sur le profil
Vous avez peut-être remarqué que le flux RSS sur le profil n’est mis à jour que lorsque vous visitez la page de la toile de l’application sur Facebook. C’est un problème car les gens passent la plupart de leur temps sur la page de profil. Pour mettre à jour automatiquement le flux RSS sur la page de profil, nous devons donc créer un travail cron sur notre serveur qui met à jour automatiquement le flux RSS sur les profils Facebook.
Il existe deux façons de mettre à jour les profils : directe et indirecte (voir http://wiki.developers.facebook.com/index.php/Changing_profile_content). Si votre contenu est individuel pour chaque utilisateur, vous devez utiliser la méthode directe, mais si c’est le même pour tous les utilisateurs, il est beaucoup plus facile d’utiliser la méthode indirecte. Comme notre flux RSS est le même pour tous les utilisateurs, nous utilisons la méthode indirecte, pour laquelle nous avons besoin d’une clé de session infinie pour notre application afin que le travail cron puisse se connecter à Facebook à tout moment.
Pour trouver notre clé de session infinie, nous créons le script get_infinite_key.php, comme indiqué sur 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(); // Écho de la "clé de session infinie" dont tout le monde parle. echo $facebook->api_client->session_key; ?> |
Maintenant, déconnectez-vous de Facebook dans votre navigateur et effacez tous les cookies, ou mieux encore, utilisez un autre navigateur dans lequel vous n’avez jamais visité Facebook auparavant (mon navigateur par défaut est Firefox, donc j’utilise SeaMonkey pour cela), et appelez ce script dans votre navigateur (par exemple, http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).
Vous serez ensuite invité à vous connecter à Facebook. Veuillez vous assurer que vous cochez la case Enregistrer mes informations de connexion pour éviter de vous reconnecter à Facebook pour utiliser cette application :

Ensuite, une page devrait s’afficher montrant la clé de session infinie de votre application. Veuillez l’écrire quelque part :

Supprimez get_infinite_key.php après cela :
rm -f /var/www/fb/htf_feed_reader/get_infinite_key.phpDans le script de travail cron que j’utiliserai ici, j’utiliserai la fonction $facebook->api_client->fbml_refreshRefUrl() pour appeler une URL qui fournit le HTML/FBML à mettre sur les pages de profil. Cette URL ne devrait fournir rien d’autre que le code HTML/FBML ; notre script index.php fournit du code HTML/FBML (pour la page de toile de l’application sur Facebook, en utilisant la ligne echo $fbml;), mais il change également les profils des utilisateurs avec la fonction $facebook->api_client->profile_setFBML(), pour laquelle nous aurions besoin des ID d’utilisateur de chaque utilisateur ayant installé notre application si nous l’utilisions dans notre script de travail cron. Nous n’avons pas ces ID d’utilisateur car nous ne les suivons pas avec notre application, et comme je l’ai dit précédemment, nous voulons utiliser la méthode indirecte pour mettre à jour les profils.
Par conséquent, je vais mettre le code pour analyser le RSS et afficher le HTML/FBML dans un script séparé, rss.php, que j’appellerai à la fois dans index.php et notre script de travail cron, cronjob.php. De plus, je vais créer un fichier de configuration (conf.php) pour notre application qui contient tous les paramètres de variable et qui est inclus dans tous les autres scripts.
Alors commençons :
vi /var/www/fb/htf_feed_reader/conf.php| |
$feed est l’URL de notre flux RSS, et $rss_url est l’URL de notre fichier rss.php (qui doit encore être créé). Veuillez ne pas confondre ces deux.
Maintenant que nous utilisons conf.php, notre nouveau appinclude.php ressemble à ceci :
vi /var/www/fb/htf_feed_reader/appinclude.php| require_login(); //attraper l'exception qui est lancée si le cookie a une session_key invalide dedans try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { //cela va effacer les cookies pour votre application et les rediriger vers une invite de connexion $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |
index.php ressemble à ceci :
vi /var/www/fb/htf_feed_reader/index.php| api_client->profile_setFBML(' |
rss.php ressemble à ceci (j’ai désactivé le cache RSS pour MagpieRSS ici, mais vous pouvez l’activer, si vous le souhaitez) :
vi /var/www/fb/htf_feed_reader/rss.php| Lecteur de flux RSS HowtoForge |
'; foreach ($rss->items as $item) { $fbml .= ''.$rss->channel['title'].'
'; if($item['description']) $fbml .= $item['description']; $fbml .= '
Et enfin, cronjob.php ressemble à ceci :
vi /var/www/fb/htf_feed_reader/cronjob.php| api_client->session_key = $infinite_session_key; // Maintenant, vous pouvez mettre à jour les pages FBML, mettre à jour vos balises fb:ref, etc. $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |
Maintenant, vous pouvez appeler directement cronjob.php dans votre navigateur (par exemple, http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php) pour tester si votre flux RSS est mis à jour sur votre profil Facebook (bien sûr, votre flux RSS doit être différent de celui d’avant…).
Si tout fonctionne comme prévu, vous pouvez créer un travail cron qui appelle cronjob.php toutes les 30 minutes (ou aussi souvent que vous le souhaitez) :
crontab -e| 0,30 * * * * /usr/bin/wget -O /dev/null http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php &> /dev/null |
Désormais, les profils des utilisateurs Facebook ayant installé votre application de lecteur RSS seront mis à jour automatiquement.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.