Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP function to get Facebook status?

I'm looking for a good, simple PHP function to get my latest Facebook status updates. Anyone know of one?

Thanks!

EDIT: I've added a half-solution below.

Or if anyone knows a good way to read in the RSS feed and spit out the recent status update?

like image 873
Bryan Denny Avatar asked Dec 20 '08 21:12

Bryan Denny


3 Answers

A quick check on PEAR found Services_Facebook

like image 166
TonyUser Avatar answered Nov 16 '22 23:11

TonyUser


This is an incomplete answer, but this is what I've gotten so far:

First: add the developer application on FB. Then create a new application. Call it whatever you want.

Second: Download the PHP client. Dump it somewhere on your webhost, i.e. /facebook/

Third: Copy the following beginner code to get yourself started into a php file:

 <?php
 require_once('facebook/php/facebook.php');
 $facebook = new Facebook("YOUR_API_KEY","YOUR_SECRET_KEY");
 $result = $facebook->api_client->fql_query("SELECT status FROM user WHERE uid = YOURIDNUMBER");
 // OR --- they both get the same data
 $result = $facebook->api_client->users_getInfo(YOURIDNUMBER,'status');
 print_r($result);
 echo "<pre>Debug:" . print_r($facebook,true) . "</pre>"; // debug info
 ?>

Other info:

  • You must be logged in and have the application added. OR you give the application offline_access permissions and have the aapplication added.
  • You can add offline_access by typing in the following url: http://www.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access
  • more info on permissions found here: http://wiki.developers.facebook.com/index.php/Extended_permissions
  • I'm at a stopping point: anything my program calls the fql query or users_getInfo, my page stops executing the php? I'm guessing there are a limited amount of calls for new applications? I've never done any FB development so I'm completely new to it. Maybe make the call and save your recent status (or most recent statuses) in your own DB to prevent excessive calls to the API?

I hope this helps someone get started!

EDIT: It seems that FB won't let you access someones status, even if the offline_access is on, unless you are that person or their friend (depending on their privacy settings).

I did however, finally manage to find the RSS feed in the new profile version: http://www.new.facebook.com/minifeed.php?filter=11

like image 22
Bryan Denny Avatar answered Nov 17 '22 01:11

Bryan Denny


I have found a way to fetch your latest facebook status. This is how you do it:

1) Create a facebook app, and copy your application secret and application id.

2) Grant the app read_stream and offline_access to your profile. (http://developers.facebook.com/docs/authentication/permissions) To fetch your latest status the app needs an access_token. With offline_access granted the access_token should "never" expire. The easiest way to do this is to click the button generated by this code: (be sure to fill in 'your app id' and set cookie to true!)

<fb:login-button perms="read_stream,offline_access"></fb:login-button>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});</script>

3) Now try to find out what access_token it is using. The access_token is saved in the fbs_appId cookie. Locate it using your browser or using $_COOKIE['fbs_appId']. Look for access_token=....

4) Now that you have a (hopefully) never expiring access_token you can use the following code:

$access_token='xxxxxxxxxxxxxxxxxxxx';
$appId='123456789132456789';
$appSecret='xxxxxxxxxxxxxxxxxxxx';
$profileId='123456789';

//http://github.com/facebook/php-sdk/blob/master/src/facebook.php
require 'facebook.php';

$facebook = new Facebook(array('appId' => $appId,'secret' => $appSecret));
$response = $facebook->api('/'.$profileId.'/feed?limit=1&access_token='.$access_token);

5) The message part should be located: $response['data'][0]['message']

I don't know HOW long the access token is valid. Facebook says:

Enables your application to perform authorized requests on behalf of the user at any time. By default, most access tokens expire after a short time period to ensure applications only make requests on behalf of the user when the are actively using the application. This permission makes the access token returned by our OAuth endpoint long-lived.

like image 2
Jens Avatar answered Nov 17 '22 01:11

Jens