Displaying a Facebook newsfeed/timeline on a website

You can retrieve the organization's newsfeed using Facebook's Graph API. Timeline can't be retrieved via public API.

There is no plugin to do this. You would need to call

https://graph.facebook.com/USER_ID/home

which gives you a JSON response.

You then need to parse the JSON into a new layout on the organization's web page.

Confusingly, calling

https://graph.facebook.com/USER_ID/feed

doesn't retrieve the newsfeed, but a user's wall posts, which may or may not be what you want.

Here is a tutorial that goes through the basics of setting up a newsfeed on a website with php.


The easiest way to do this is to read the Facebook timeline RSS:

function FacebookFeed($pagename, $count, $postlength) {
$pageID = file_get_contents('https://graph.facebook.com/?ids='.$pagename.'&fields=id');
$pageID = json_decode($pageID,true);
$pageID = $pageID[$pagename]['id'];

ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
$rssUrl = 'http://www.facebook.com/feeds/page.php?format=rss20&id='.$pageID;
$xml = simplexml_load_file($rssUrl);
$entry = $xml->channel->item;

for ($i = 0; $i < $count; $i++) {
$description_original = $entry[$i]->description;
$description_striphtml = strip_tags($description_original);
$description = substr($description_striphtml, 0, $postlength);

$link = $entry[$i]->link;

$date_original = $entry[$i]->pubDate;
$date = date('d-m-Y, H:i', strtotime($date_original));

$FB_feed .= $description."&hellip;<br>";
$FB_feed .= "<small><a href='".$link."'>".$date."</a></small><br><br>";
}

return $FB_feed;
}

AFAIK, it is possible, in a way. The simplest solution, but not best for your situation could be the Like Box plugin:

The Like Box enables users to:

See how many users already like this Page, and which of their friends like it too
Read recent posts from the Page
Like the Page with one click, without needing to visit the Page

Better solution: use their Graph API, however you can only read the data(as JSON), not have the stream exactly replicated on your client's website, don't expect to be able to apply the styles that facebook uses(i.e you won't be able to scrape it), you'll have to either replicate it, or create your own styles.

Now if the page is public and can be read by all, as in there are no privacy rules, then you can simply call the url with any valid access_token(can be app access_token also):

https://graph.facebook.com/<clientpagename_OR_id>/feed

or

https://graph.facebook.com/<clientpagename_OR_id>/posts

depending on what exactly you need, try the graph api explorer to check that(and also see the kind of data being returned). When there are lots of posts, there will be pagination urls, which you'll be able to notice in the explorer too.

Incase the page is not public, you'll need an access_token with the read_stream permission, hence you'll need to create a facebook app, of type website. Then get your client's page's admin to authorize the app, with read_stream permission. After that you can call the urls with the access_token that you receive after authentication and can continue reading the stream.

https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken

In this case use the PHP SDK, to simplify authentication and calling the graph api.

Important Links: Authentication Guide , Real-time-updates.

Good luck.

Edit: you do need an access token to access the feed or posts connections, but you do not necessarily need an access token to read the page object itself, as given in this documentation.
Note from the doc:

For connections that require an access token, you can use any valid access token if the page is public and not restricted. Connections on restricted pages require a user access token and are only visible to users who meet the restriction criteria (e.g. age) set on the page.