Facebook RSS · 4 min read · Sep 13, 2025

So richten Sie eine Facebook RSS-Feed-Reader-Anwendung für Ihren Blog ein - Seite 5

7 Automatisches Aktualisieren des RSS-Feeds im Profil

Sie haben vielleicht bemerkt, dass der RSS-Feed im Profil nur aktualisiert wird, wenn Sie die Canvas-Seite der Anwendung auf Facebook besuchen. Das ist ein Problem, da die meisten Menschen ihre Zeit auf der Profilseite verbringen. Um den RSS-Feed auf der Profilseite automatisch zu aktualisieren, müssen wir daher einen Cron-Job auf unserem Server erstellen, der den RSS-Feed auf den Facebook-Profilen automatisch aktualisiert.

Es gibt zwei Möglichkeiten, Profile zu aktualisieren: direkt und indirekt (siehe http://wiki.developers.facebook.com/index.php/Changing_profile_content). Wenn Ihr Inhalt für jeden Benutzer individuell ist, müssen Sie die direkte Methode verwenden, aber wenn er für alle Benutzer gleich ist, ist es viel einfacher, den indirekten Weg zu nutzen. Da unser RSS-Feed für alle Benutzer gleich ist, verwenden wir den indirekten Weg, für den wir einen unendlichen Sitzungsschlüssel für unsere Anwendung benötigen, damit der Cron-Job sich jederzeit bei Facebook anmelden kann.

Um unseren unendlichen Sitzungsschlüssel herauszufinden, erstellen wir das Skript get_infinite_key.php, wie auf http://wiki.developers.facebook.com/index.php/Infinite_session_howto gezeigt:

vi /var/www/fb/htf_feed_reader/get_infinite_key.php

| require_frame(); $user = $facebook->require_login(); // Geben Sie den "unendlichen Sitzungsschlüssel" aus, über den alle sprechen. echo $facebook->api_client->session_key; ?> |

Jetzt melden Sie sich in Ihrem Browser von Facebook ab und löschen Sie alle Cookies oder verwenden Sie besser einen anderen Browser, in dem Sie Facebook noch nie besucht haben (mein Standardbrowser ist Firefox, also benutze ich SeaMonkey dafür) und rufen Sie dieses Skript in Ihrem Browser auf (z.B. http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).

Sie werden dann aufgefordert, sich bei Facebook anzumelden. Bitte stellen Sie sicher, dass Sie das Kontrollkästchen “Meine Anmeldeinformationen speichern, um sich nicht erneut bei Facebook anmelden zu müssen, um diese Anwendung zu verwenden” aktivieren:

Danach sollte eine Seite angezeigt werden, die den unendlichen Sitzungsschlüssel Ihrer Anwendung zeigt. Bitte notieren Sie ihn irgendwo:

Löschen Sie anschließend get_infinite_key.php:

rm -f /var/www/fb/htf_feed_reader/get_infinite_key.php

Im Cron-Job-Skript, das ich hier verwenden werde, benutze ich die Funktion $facebook->api_client->fbml_refreshRefUrl(), um eine URL aufzurufen, die den HTML/FBML-Code liefert, der auf den Profilseiten angezeigt werden soll. Diese URL sollte nichts anderes als den HTML/FBML-Code liefern; unser index.php-Skript liefert HTML/FBML-Code (für die Canvas-Seite der Anwendung auf Facebook, unter Verwendung der Zeile echo $fbml;), ändert jedoch auch die Profile der Benutzer mit der Funktion $facebook->api_client->profile_setFBML(), für die wir die Benutzer-IDs jedes Benutzers benötigen würden, der unsere App installiert hat, wenn wir sie in unserem Cron-Job-Skript verwenden würden. Wir haben diese Benutzer-IDs nicht, da wir sie mit unserer App nicht verfolgen, und wie ich bereits sagte, möchten wir die indirekte Methode verwenden, um die Profile zu aktualisieren.

Daher werde ich den Code zum Parsen des RSS und zum Anzeigen des HTML/FBML in ein separates Skript, rss.php, einfügen, das ich sowohl in index.php als auch in unserem Cron-Job-Skript, cronjob.php, aufrufen werde. Außerdem werde ich eine Konfigurationsdatei (conf.php) für unsere App erstellen, die alle Variablen-Einstellungen enthält und in allen anderen Skripten eingebunden wird.

Also, fangen wir an:

vi /var/www/fb/htf_feed_reader/conf.php

| |

$feed ist die URL unseres RSS-Feeds, und $rss_url ist die URL unserer (noch zu erstellenden) rss.php-Datei. Bitte verwechseln Sie diese beiden nicht.

Jetzt, da wir conf.php verwenden, sieht unser neues appinclude.php so aus:

vi /var/www/fb/htf_feed_reader/appinclude.php

| require_login(); // fangen Sie die Ausnahme ab, die ausgelöst wird, wenn das Cookie einen ungültigen session_key enthält try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { // dies löscht die Cookies für Ihre Anwendung und leitet sie zu einer Anmeldeseite weiter $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |

index.php sieht so aus:

vi /var/www/fb/htf_feed_reader/index.php

| api_client->profile_setFBML('', $user); $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |

rss.php sieht so aus (ich habe den RSS-Cache für MagpieRSS hier deaktiviert, aber Sie können ihn aktivieren, wenn Sie möchten):

vi /var/www/fb/htf_feed_reader/rss.php

| HowtoForge RSS Feed Reader

'; $fbml .= '
'.$rss->channel['title'].'
'; foreach ($rss->items as $item) { $fbml .= '

'; if($item['description']) $fbml .= $item['description']; $fbml .= '
'; } $fbml .= '
'; echo $fbml; ?> |

Und schließlich sieht cronjob.php so aus:

vi /var/www/fb/htf_feed_reader/cronjob.php

| api_client->session_key = $infinite_session_key; // Jetzt können Sie FBML-Seiten aktualisieren, Ihre fb:ref-Tags aktualisieren usw. $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |

Jetzt können Sie cronjob.php direkt in Ihrem Browser aufrufen (z.B. http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php), um zu testen, ob Ihr RSS-Feed auf Ihrem Facebook-Profil aktualisiert wird (natürlich muss Ihr RSS-Feed anders sein als zuvor…).

Wenn alles wie erwartet funktioniert, können Sie einen Cron-Job erstellen, der cronjob.php alle 30 Minuten (oder so oft wie Sie möchten) aufruft:

crontab -e

| 0,30 * * * * /usr/bin/wget -O /dev/null http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php &> /dev/null |

Von nun an werden die Profile der Facebook-Nutzer, die Ihre RSS-Reader-Anwendung installiert haben, automatisch aktualisiert.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.