J'essaie d'extraire une page du flux RSS de Facebook. Cependant, chaque fois que j'essaie de l'essayer, une erreur dans le code XML s'affiche:
<![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>
]]>
L'URL que j'utilise est:
https://www.facebook.com/feeds/page.php?id=<fb_id>&format=rss20&access_token=<my_page_token>
Je n'ai pas de limite d'âge ni de pays:
De plus, j'ai essayé avec et sans mon jeton d'accès.
Comme indiqué dans les commentaires ci-dessous, l'URL JSON fonctionne effectivement:
https://graph.facebook.com/<page_name>/feed&https://www.facebook.com/<page_name>/feed?access_token=<token>
Que se passe-t-il ici/comment résoudre le problème?
J'ai eu le même problème. Après avoir cherché une solution, j'ai découvert que FB avait silencieusement tué le support RSS public. (voir ce post de Jesse Stay)
J'ai compris que je devais appeler moi-même l'API et construire le flux (j'ai également besoin que le flux soit analysé par un plugin WP et d'autres éléments.
Commencez donc par obtenir une clé API (également appelée identifiant d'application) et téléchargez le SDK PHP Facebook.
Puis téléchargez la classe Universal Feed Generator PHP. Il générera tous les en-têtes et XML requis pour vous.
Votre script php sera comme ça:
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();
Note de l'avenir (2013-07-09): N'écoutez plus ma réponse. C'est vieux. Facebook a une nouvelle API avec de nouvelles fonctionnalités sur son langage de requête, alors ne vous embêtez pas de tirer des flux. Essayez d'utiliser leur API de manière plus amusante et intelligente :)
Voici mes indications.
Quand il n'y a pas d'identifiant de page dans la page source, j'ai trouvé l'identifiant via le lien "créer une page", comme dans
https://www.facebook.com/pages/create.php?ref_id=the_#_here
ahhhh ... si bon d'avoir mon flux RSS en retour! Merci tout le monde! :RÉ
Deux étapes faciles pour obtenir le flux RSS/Atom:
Cette URL génère un flux Atom, mais vous pouvez le modifier.
Pour trouver plus facilement un identifiant de page:
Il vous suffit d'afficher le code source de votre page FB (ou de votre application de chronologie, auparavant appelée onglet), puis de rechercher page_id
. Remplacez-le par le code fourni.