Ich versuche, einen Seiten-Feed für RSS von Facebook abzurufen. Bei jedem Versuch, ihn abzurufen, erhalte ich jedoch eine Fehlermeldung in der XML mit den folgenden Angaben:
<![CDATA[
This feed URL is no longer valid. Visit this page to find the new URL, if you have access: <a href="https://www.facebook.com/profile.php?id=<FB_ID>">https://www.facebook.com/profile.php?id=<FB_ID></a>
]]>
Die URL, die ich benutze, ist:
https://www.facebook.com/feeds/page.php?id=<fb_id>&format=rss20&access_token=<my_page_token>
Ich habe weder eine Altersbeschränkung noch eine Länderbeschränkung:
Außerdem habe ich es mit und ohne Zugriffstoken versucht.
Wie in den Kommentaren unten angegeben, funktioniert die JSON-URL tatsächlich:
https://graph.facebook.com/<page_name>/feed&https://www.facebook.com/<page_name>/feed?access_token=<token>
Was ist hier los/wie löse ich das Problem?
Ich bin mit dem gleichen Problem gekommen. Nachdem ich nach einer Lösung gesucht hatte, stellte ich fest, dass FB die öffentliche RSS-Unterstützung stillschweigend beendet hat. (siehe diesen Beitrag von Jesse Stay)
Ich habe verstanden, dass ich die API selbst aufrufen und den Feed erstellen muss (ich muss den Feed außerdem mit einem WP Plugin und anderen Elementen analysieren).
Holen Sie sich also zunächst einen API-Schlüssel (auch App-ID genannt) und laden Sie das PHP Facebook-SDK herunter.
Laden Sie dann die Klasse Universal Feed Generator PHP herunter. Es werden alle erforderlichen Header und XML für Sie generiert.
Dein PHP-Skript wird so aussehen:
require('lib/facebook.php'); // require your facebook php sdk
include("feed_generator/FeedWriter.php"); // include the feed generator feedwriter file
$fb = new facebook(array(
'appId' => 'YOUR_APP_ID', // get this info from the facebook developers page
'secret'=> 'YOUR_SECRET_KEY' // by registering an app
));
$response = $fb->api('/spreetable/feed','GET'); // replace "spreetable" with your fb page name or username
// create the feedwriter object (we're using ATOM but there're other options like rss, etc)
$feed = new FeedWriter(ATOM);
$feed->setTitle('Spree Table'); // set your title
$feed->setLink('http://spreetable.com/facebook/feed.php'); // set the url to the feed page you're generating
$feed->setChannelElement('updated', date(DATE_ATOM , time()));
$feed->setChannelElement('author', array('name'=>'Spree Table')); // set the author name
// iterate through the facebook response to add items to the feed
foreach($response['data'] as $entry){
if(isset($entry["message"])){
$item = $feed->createNewItem();
$item->setTitle($entry["from"]["name"]);
$item->setDate($entry["updated_time"]);
$item->setDescription($entry["message"]);
if(isset($entry["link"]))
$item->setLink(htmlentities($entry["link"]));
$feed->addItem($item);
}
}
// that's it... don't echo anything else, just call this method
$feed->genarateFeed();
Hinweis aus der Zukunft (2013-07-09): Hör nicht mehr auf meine Antwort. Es ist alt. Facebook hat eine neue API mit neuen Funktionen in der Abfragesprache, sodass Sie keine Feeds ziehen müssen. Versuchen Sie, ihre API auf unterhaltsame, intelligente Weise zu verwenden :)
Hier sind meine Richtungen.
Wenn auf der Quellseite keine Seiten-ID vorhanden ist, habe ich die ID über den Link "Seite erstellen" gefunden, wie in
https://www.facebook.com/pages/create.php?ref_id=the_#_here
ahhhh ... so gut, dass ich meine RSS zurückschickt! Danke euch allen! : D
Zwei einfache Schritte zum RSS/Atom-Feed:
Diese URL generiert einen Atom-Feed, Sie können ihn jedoch ändern.
So finden Sie die Seiten-ID einfacher:
Sehen Sie sich einfach die Quelle für Ihre FB-Seite (oder Timeline-App, zuvor als Registerkarte bezeichnet) an und suchen Sie nach page_id
. Ersetzen Sie es durch den bereitgestellten Code.