Ever wanted to put a Facebook page’s feed into your website? Every Facebook page has an RSS & JSON feed. In this tutorial I will show you how to use PHP and JSON to pull the feed from Facebook without authentication.
- Make sure your Page is published and visible to the public. This can be done under the Page settings.
- You will need your page ID. You can get this from https://graph.facebook.com/yourpage for example https://graph.facebook.com/HoosierHeights If your page does not have a username, you can visit your page and copy the last numbers in the URL for example:
https://www.facebook.com/pages/HoosierHeights/163276271689 NOTE: If you’re page is not published (step 1) then you’ll get this error [php]{
“error”: {
“message”: “Unsupported get request.”,
“type”: “GraphMethodException”,
“code”: 100
}
}[/php] - Now that you have your page ID you can view the JSON feed at this URL:
http://www.facebook.com/feeds/page.php?id=163276271689&format=json
(replacing the number with your page ID). NOTE: You can get the RSS version by replacing format=json with format=rss20 for example https://www.facebook.com/feeds/page.php?id=163276271689&format=rss20 - Here is the PHP code to pull the JSON feed into your site. (Be sure to replace the URL with your own).
[php]
//replace the Page ID with your own
$url = "http://www.facebook.com/feeds/page.php?id=163276271689&format=json";// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
$curl = curl_init();// Setup headers - the same headers from Firefox version 2.0.0.6
// below was split up because the line was too long.
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);$html = curl_exec($curl); // execute the curl command
curl_close($curl); // close the connectionreturn $html; // and finally, return $html
}// uses the function and displays the text off the website
$text = disguise_curl($url);$json_feed_object = json_decode($text);
foreach ( $json_feed_object->entries as $entry )
{
echo “
{$entry->title}
“;
$published = date(“g:i A F j, Y”, strtotime($entry->published));
echo “{$published}“;
echo “{$entry->content}
“;
echo “
“;
}/* * * * * * * * * * * * * * * * * *
* Below is the XML version *
* assuming you used the XML *
* format in the Facebook feed URL *
* You’ll need to uncomment to use *
* * * * * * * * * * * * * * * * * */
//$xml = new SimpleXMLElement($text);
//foreach ( $feed->item as $entry )
//{
// echo “
” . (string) $entry->title . “
“;
// $published = date(“g:i A F j, Y”, strtotime($entry->pubDate));
// echo “{$published}“;
// echo “” . (string) $entry->description . “
“;
// echo “
“;
//}?>
[/php]
That’s it! Easy right? I would like to give credit to @mdlamar for providing help with this idea.