Hacking the Facebook Developer API

It’s been a while since I’ve written very much code just for myself, rather than everyone else. So this weekend I’ve decided to jump onto the Facebook API and learn a little bit more about the Gallery2 API in the process.

Why?

I have thousands of photos on Blakepics, and Facebook comes along and wants me to upload them all over again. Well, sure, I can do that – or, it makes a lot more sense to combine the power of the two systems.

What?

Wanting to keep this initial trial run extremely simple – I’ve gone for just adding a link below my profile picture. That way I can keep very clear of the Gallery API for the time being effectively reducing my problems by half ๐Ÿ™‚

How?

  1. User adds the Blakepics application on Facebook
  2. Setting the Callback URL on Facebook, a request is made to Blakepics.com
  3. Blakepics.com makes use of the Facebook API to check the currently logged in user
    // the facebook client library
    include_once('../modules/facebooktaggedalbums/api/client/facebook.php');
    include_once('../modules/facebooktaggedalbums/api/client/facebookapi_php5_restlib.php');
    // some basic library functions
    include_once('../modules/facebooktaggedalbums/api/lib.php');
    // this defines some of your basic setup
    include_once('../modules/facebooktaggedalbums/api/config.php');
    $facebook = new Facebook($api_key, $secret);
    $facebook->require_frame();
    $user = $facebook->require_login();
  4. Using this user ID, Blakepics requests the first and last name of that user from Facebook
    $user_info = $facebook->api_client->users_getInfo ($user, 'first_name,last_name');
  5. Generate a URL that links to the tagged album, e.g. http://www.blakepics.com/key/kevin+blake. Using the rather cool FBML (FaceBook Markup Language), the link can be sent to Facebook with the instruction that this should be applied as a profile action (fb:profile-action).
    $fbml="<fb:profile-action url=\"http://www.blakepics.com/key/" . $user_info[0]['first_name'] . "+".$user_info[0]['last_name']."\">View more Photos of me at Blakepics</fb:profile-action>";
    $facebook->api_client->profile_setFBML($fbml, $user);
  6. And display a message back to the user, to let them know what’s happened
    print "Blakepics profile link has been added";

And that’s it really. Obviously there’s a lot more that can be done, but the simple application works and is on its way to approval from the Facebook team. All being well, you should be able to add your own links to tagged albums very shortly.

Tags: , , , , ,

Leave a Reply?