Häng med på insidan av Wilson

Wilsonbloggen

24/2 2010 av Wilsonbloggen

Plocka ut RSS-flöde ifrån Facebook

Som ni säkert har märkt så samlar vi på Wilson våra olika flöden från sociala medier på vår förstasida. Det flöde som länge har fattats var flödet från Facebook. När jag först byggde samlingsfunktionen var de inte helt enkelt att hitta RSS flödet ifrån Facebook. Dem var precis färd med att släppa ny version av Facebook och det var lite rörigt. Men för någon dag sedan kom iden igen att försöka få tag i ett RSS flöde. Det finns en hel del olika metoder. Det finns b.la en metod där man använder en kompis konto där man lägger upp sig själv i en "lista" där man sedan kan få ett flöde ifrån men det finns ett mycket enklare sett. Själva rss-funktionen finns hos Facebook och är publika fast flödesadresserna skyltar dem inte friskt med. Men här visar jag i alla fall hur dem ser ut: För en sida, t.ex Wilson Creative på Facebook Adress: http://www.facebook.com/feeds/page.php?format=rss20&id={sid_id} 1 {sid_id} kan man få ta i genom att gå in på sidan på Facebook och ta de ifrån adressfältet. Här hittar du Wilson Creative RSS flöde. För personliga statusuppdateringar t.ex mitt Martin Sköld Adress: http://www.facebook.com/feeds/status.php?id={ditt_id}&viewer={ditt_id}&key={intern_nyckel}&format=rss20 {ditt_id} och {intern_nyckel}  hittar du genom att gå in på följande sida: www.facebook.com/notifications.php och sedan klicka på "via RSS" länken som ligger i fältet till höger. 2 Du får då upp ett RSS flöde med alla dina Facebook händelser. Om du nu kollar i ditt adressfält så har du fått upp både ditt ID och din intern nyckel. Mata in dem i adressen som står ovan så får du ut alla dina händelser på Facebook. 3 Så där ja. Nu har vi löst hur vi får fram RSS flödena men hur tar vi hand om dem? Till enkla RSS hanteringssituationer använder jag PHP:s inbyggda SimpleXML funktionalitet. Och då skulle den enkla vara att göra så här: [code lang="php"] <?php $xml = simplexml_load_file('http://www.facebook.com/feeds/status.php?id={ditt_id}&viewer={ditt_id}&key={intern_nyckel}&format=rss20'); ?>[/code] Men tyvärr funkar inte detta eftersom Facebook begränsar besökarnas webbläsare till I Explorer , FireFox och Safari vilket den också meddelar när du försöker hämta direkt med SimpleXML. Istället får du först hämta RSS innehållet med hjälp av Curl. I Curl har de ett stort antal valmöjligheter hur du vill hämta datan. Så här ser min konfigurering ut: [code lang="php"] <?php if (function_exists('curl_init')) { $feed = "http://www.facebook.com/feeds/status.php?id={ditt_id}&viewer={ditt_id}&key={intern_nyckel}&format=rss20"; // initialize a new curl resource $ch = curl_init(); // set the url to fetch curl_setopt($ch, CURLOPT_URL, $feed); // don't give me the headers just the content curl_setopt($ch, CURLOPT_HEADER, 0); // return the value instead of printing the response to browser curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // use a user agent to mimic a browser curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'); $content = curl_exec($ch); } ?>[/code] På detta sätt kan du nu få tag i innehållet i RSS flödet. Du kan nu hantera det med hjälp av SimpleXML. [code lang="php"] <?php //Create SimpleXML object and load content $sxml = new SimpleXMLElement($content); //Loop every item foreach($sxml->channel->item AS $item) { $title=$item->title $description=$item->description; .... } ?> [/code]