Facebook Status Updates and Infinite Session Keys
Anyone have the first clue as to why Facebook’s developer documentation sucks so hard?
I was developing a simple Facebook application for one of my company’s clients that required me to update a user’s status via a scheduled background process. The developer documentation lead me down all kinds of paths by referencing infinite session keys and the “keep me logged in” check box. So I scoured the internets for some examples, only to find that there aren’t many. All these claims that bajillions of people are creating Facebook apps and not a single one of them that are updating a user’s status offline can document it? ARRRGGG!
So, here is what I hope will save someone else a ton of time – a real life, working code sample for updating a user’s Facebook status offline. Careful – make no sudden moves or you might scare this rare beast back into hiding.
Our app is requesting two extended permissions – “offline_access” and “status_update”. This is also using Elliot Haughin’s Facebook plugin for CodeIgniter. Elliot’s package includes an older version of the Facebook PHP Library, so I had to grab the latest version from Facebook and drop it in place. Other than that it was easy to integrate this into my app.
//http://wiki.developers.facebook.com/index.php/Users.hasAppPermission //must be one of: // email, read_stream, publish_stream, offline_access, status_update, photo_upload, // create_event, rsvp_event, sms, video_upload, create_note, share_item if( $this->facebook_connect->client->users_hasAppPermission("offline_access", $fbUID) && $this->facebook_connect->client->users_hasAppPermission("status_update", $fbUID) ){ $this->facebook_connect->client->users_setStatus("some status message", $fbUID); }
Seriously, that’s it! All those posts, all that searching – for 3 lines of code! The key point that was conveniently left out of other articles is that there is no “session key” required now. Facebook is smart enough to know that the user granted the app permission for offline_access and status_update, so you only need to send the user’s Facebook ID. Moley.
Another annoyance. They make a big deal out of the fact that they provide a REST-ful interface, but none of the examples in their documentation show the format of the REST request (although they do at least provide the REST server URL and a handy hint to include the “Content-Type: application/x-www-form-urlencoded” header). Yes, I get it, you want me to use the PHP Library, which is nicely designed. But for quick and dirty testing I like to whip up some curl commands. If I don’t know how to format the XML I can’t easily do that. Bah!
4 comments
Hi dude, thanks a lot, i ve been looking for this
i hope i didnt “scare this rare beast back into hiding.”
You’re welcome!
Wow – I had been racking my brains over this one. Bless you and all of your progeny. 🙂
Been trying to implement this and all i get is
—
Fatal error: Uncaught exception ‘FacebookRestClientException’ with message ‘parameter uid or session key required’ in /hsphere/local/home/severndigital/code_igniter_apps/pozzel.com/application/libraries/facebook-client/facebookapi_php5_restlib.php:3374
—
Any suggestions?