Note: Facebook changes its API as frequently as you change your socks. These instructions worked as of Apr 19th 2011.
In a previous post, I outlined how to update your Facebook Profile from a PHP script.
This is fine if you are using Facebook as an individual, but if you are a business or an organisation, you won’t have a profile, you will have a Fan Page, which people ‘Like’.
Updating a Fan Page from a PHP script is a lot more difficult, because Fan pages are managed by users with standard profile accounts, and you need to obtain a extended range of permissions in order make updates to their Pages.
Anyway, its is possible, and here’s how.
Firstly, this is what you will need:
A proper browser (ie anything other than Internet Explorer) that you can be confident will send long HTTP GET requests
cURL, which can be run from a command line (for testing)
A good text editor
A credit card (weird, I know, but go with it)
A standard Facebook account
We are going to create a Facebook Application, and add that Application to the Facebook User Account/Profile which manages the Page we want to update. The Application will have the necessary permissions to update Pages which the Facebook User Account/Profile manages.
Step 1: Add the Facebook Developer Application to your Facebook Account
Login to Facebook
(If you have added the Facebook Developer application previously, you can skip this bit)
Go to: http://www.facebook.com/developers/
Look for the button that allows you to add the Facebook Developer Application
If you haven’t added this before, you will need to confirm your identity. You may be able to do this with your mobile phone, but if not you will have to enter valid Credit Details. No charge will be made to your Credit Card.
Step 2: Create an Application
Once the Facebook Developer Application is added, you now create an Application. Call it something relevant. You don’t need to enter much in the way of detail for the application. The only important data you need to enter is under Website, where you should enter a Site URL and Site Domain.
These should be something relevant, for instance, the website address of the business/organisation to whom the page relates. Note: enter a trailing slash for the Site URL eg http://www.mysite.com/
Now, save the details, and you will be returned to a summary page which lists the details for your application. You do not need to submit your application to the Facebook Directory.
From this page, copy and paste your Application ID and Application Secret into your text editor
Step 3: Establish access to your Account/Profile for your Application
Starts to get a bit tricky now, so pay attention. Read everything twice.
You now what to obtain an Authorisation Code for your Application. This code will be generated by Facebook based on the permissions your Application requests from your Facebook User Account/Profile when you add your Application to your Faecbook Account/Profile.
Construct the following URL in your text editor:
https://www.facebook.com/dialog/oauth?client_id=<YOUR APPLICATION ID>&redirect_uri=<YOUR SITE URL>&scope=manage_pages,offline_access,publish_stream
YOUR APPLICATION ID = Application ID you took from your Application Details
YOUR SITE URL = The Site URL you entered when setting up your Application
scope = The permissions you are requesting:
manage_pages = allows application to manage pages for which the user is the administrator
offline_access = allows updates to occur indefinitely
publish_stream = allows application to update the feed of the pages for which the user is administrator
Now, ensuring that you are logged into Facebook, paste the URL into your browser and hit enter.
A Facebook page will render, prompting you to add the application with the permissions as described above. Accept this, and you will be redirected to your Site URL. The actual query string to which you are re-directed will contain a long ‘code’ value. Copy this from your browser address bar and paste into your text editor.
This code is your Authorisation Code.
Step 4: Get an Access Token to allow your Application access your Profile
Now that you have an Authorisation Code, which is a sort of once off thing, you can request an Access Token, which will allow your Application have permanent access to your User Profile.
Again in your text editor, construct the following URL:
https://graph.facebook.com/oauth/access_token?client_id=<YOUR APPLICATION ID>&redirect_uri=<YOUR SITE URL, WITH A TRAILING SLASH>&client_secret=<YOUR APPLICATION SECRET>&code=<YOUR AUTHORISATION CODE>
Be extra careful with this. Its a very long string. Ensure you include a trailing slash in your Site URL.
Now, paste the URL into your browser and hit enter. Facebook should return a single line like:
access_token=220088774674094|c7cb68d51ae2f40e9878ab14.xxxxxxxxxx etc etc
(Note: this is not a real access token, its one I made up.)
You now have an Access Token that allows your Application do stuff to your User Profile
Step 5: Get an Access Token for the Page you want to update
Yes, more Access Tokens are needed! You need a specific Access Token for each Page you want to update! Jesus wept!
Construct the following URL in your text editor:
https://graph.facebook.com/me/accounts?access_token=<YOUR ACCESS TOKEN FOR YOUR USER PROFILE>
Paste it into your browser and hit enter. Facebook will now return JSON objects for each of the Pages and Applications that are under your User Profile. You should see an object for the Page you want to update, each of which will include an ‘id’ and ‘access_token’.
Copy and paste these into your text editor.
You now have an Access Token and Page ID for the Page you want to update.
Step 6: Test!
Construct the following command in your text editor:
curl -F ‘access_token=<THE ACCESS TOKEN FOR THE PAGE YOU WANT TO UPDATE’ -F ‘message=It works.’ https://graph.facebook.com/<THE ID FOR THE PAGE YOU WANT TO UPDATE>/feed
Paste to a command line and hit enter. If it works, you will get back a JSON object containing an update id, and the message will appear on the Feed of the Facebook Page.
If not, you will get some class of error. Retrace and try again. I can’t emphasis enough how unforgiving the tolerances are here, but if you persist, it will work!
Once you have it working, you can then build the update into your PHP application using cURL.