Pull pages data via facebook graph

In the last article we discussed how to create or extend access token for facebook pages. Today we are going a bit further and writing a script where we can pull some pages data.
So here is the full code, i will explain it below where necessary.

Save the following code as index.php(or whatever name you like).
[cc lang=”php” escaped=”true” nowrap=”false” noborder=”true” line_numbers=”false” lines=”80″ tab_size=”4″]
<?php
// Facebook APP [Pages App for access tokens]
define(‘APP_ID’, ‘enter_app_id_here’);
define(‘APP_SEC_KEY’, ‘enter_app_secret_here’);

// Access Token
define(‘ACCESS_TOKEN_PAGE1’, ‘enter_access_token_here_for_page1’);
define(‘ACCESS_TOKEN_PAGE2’, ‘enter_access_token_here_for_page2’);

// Page IDs
define(‘APP_PAGE_ID_PAGE1’, ‘enter_page1_id_here’); // for page1
define(‘APP_PAGE_ID_PAGE2’, ‘enter_page2_id_here’); // for page2

// Create array for pages ids, tokens, country etc
$total_pages = array( array( ‘Pageid’ => APP_PAGE_ID_PAGE1, ‘Access_token’ => ACCESS_TOKEN_PAGE1, ‘Country’ => ‘FINLAND’ ), array( ‘Pageid’ => APP_PAGE_ID_PAGE2, ‘Access_token’ => ACCESS_TOKEN_PAGE2, ‘Country’ => ‘SINGAPORE’ ) );

// periods
$day = ‘day’;
$week = ‘week’;

$date = date(“10-07-2013”);

foreach ($total_pages as $pages) {

$pageid = $pages[‘Pageid’];
$accesstoken = $pages[‘Access_token’];
$country = $pages[‘Country’];

// Daily People Talking About This [page_storytellers]
$fql_query_page_storytellers = ‘https://graph.facebook.com/’.’fql?q=SELECT+metric,value+FROM+insights+WHERE+object_id=’.$pageid.’+

AND+metric=”page_storytellers”+AND+end_time=end_time_date(“‘.$date.'”)+

AND+period=period(“‘.$day.'”)&access_token=’.$accesstoken;

$fql_obj_page_storytellers = file_get_contents($fql_query_page_storytellers, true);

//print_r($fql_obj_page_storytellers);
if(!empty($fql_obj_page_storytellers[‘data’])) {
echo $e1 = $fql_obj_page_storytellers[‘data’][‘0’][‘value’];
}
else
{
echo $e1 = “empty string”;
}

// Daily New Likes [page_fan_adds_unique]
$fql_query_page_fan_adds_unique = ‘https://graph.facebook.com/’.’fql?q=SELECT+metric,value+FROM+insights+WHERE+object_id=’.$pageid.’+

AND+metric=”page_fan_adds_unique”+AND+end_time=end_time_date(“‘.$date.'”)+

AND+period=period(“‘.$day.'”)&access_token=’.$accesstoken;

$fql_obj_page_fan_adds_unique = file_get_contents($fql_query_page_fan_adds_unique, true);

//print_r($fql_obj_page_fan_adds_unique);
if(!empty($fql_obj_page_fan_adds_unique[‘data’])) {
echo $e2 = $fql_obj_page_fan_adds_unique[‘data’][‘0’][‘value’];
}
else
{
echo $e2 = “empty string”;
}

}
?>
[/cc]

———————————————————–

PLEASE READ BEFORE USING THE SCRIPT

From the above script change the following vars:

enter_app_id_here = change this to your app id which you created.

enter_app_secret_here = enter the app secret here.

enter_access_token_here_for_page1 = enter the access token for page 1 if you have many pages.

enter_access_token_here_for_page2 = enter the access token for page 2 if you have many pages.

Note: You can add many pages as you want, but if you have only one page, just remove the 2nd array from the $total_pages array for page2. I have added country var to the array, this is only to recognize the data if have many pages while easy to save to database for later use.

enter_page1_id_here = You can get this while following the previous article.

enter_page2_id_here = You can get this while following the previous article.

For the periods, please read the facebook insight page for more details and usage.

There are not much changes required except from the above. But if you want to change the script for your need, go ahead and change/enhance it as it fits your requirements. You can pull more data by reading the insight page OR can save the data to database for later use.

———————————————————–

Open your browser and call index.php. One more thing, facebook does not provide latest data for pages so you have to go back last 3 days, if today is 14-07-2013, you can get the data for 10-07-2013 or maybe 11-07-2013.

How to create/extend access token for facebook pages

1st of all you have to create an app where we will allow permissions like manage_pages and read_insights etc to have full access to pages tokens etc from that app. So let’s start and try to make it as simple as we can.

1- Create an App.

2- Click on Permissions link. Add the permissions like manage_pages, read_insights etc in the Extended permissions text box and Save.

3- Go to graph explorer and select the app we just created from the dropdown. Click on the get access token button. Check necessary permissions like in step 2.

4- Type this in Graph API me/accounts and it will show all the pages which this user/account administrator of with info like access_token etc.

5- Copy the access token and use it in your PHP scripts for that page. Now you will be able to pull that page data like total likes, total dislikes etc using insights etc.

By default the access token will last for few hours, and for pages we need to have long session for that token.

Extend the access_token by using this url:

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=PAGE_TOKEN

APP_ID = The app id we granted permissions like manage_pages, read_insights etc.

APP_SECRET = The app secret we granted permissions like manage_pages, read_insights etc.

PAGE_TOKEN = The token of the page we want to extend.

After extending, facebook will issue new access_token, use that in the script. The new extended token will have 2 months time.

Check page access_token validity by using debug url:

https://developers.facebook.com/tools/debug/access_token

Input the page access_token in the text box.

I will be writing another article on how to use the above app, page details in PHP and pull some page data. Stay tuned.

Facebook: How to create and add an app to a page

I will try to make it very easy. No extra steps or configuration here, just the basic stuff which will get you going.

1- Go to developer page, and click on create app button, and follow the onscreen instructions to create a new app.

2- Edit the page tab section with appropriate details. Also check out the App details section for privacy links and app icon if you wish to add one.

3- Enable sandbox mode for testing the app 1st.

4- Disable social discovery in Advanced section.

5- Add new testers and admins from Roles sections.

6- Now create a facebook page if don’t have yet OR use existing one to add the app to it.

7- Use the following URL to add the app:

https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&next=YOUR_URL

Change YOUR_APP_ID and YOUR_URL, and hit enter. Select the page from the dropdown and click Add button. You are done, your newly created app will be on the page in tabs section.

YOUR_APP_ID : Your newly created app id, can be retrieved from the settings.

YOUR_URL : The url to your app, hosted some where.

If everything is cool and want to go live, just disable sandbox mode and enable social discovery and your app will be live for users.

Facebook: App not showing in the tabs list

If you have ever worked on Facebook apps as a developer, you will have a bitter experience with facebook because of their changes now and then to the API’s.

Let’s say you have created an awesome app for one of your clients. Hosted the app, everything is working good. Now when you add the app to that client page who has more than may be 15 or 20 apps listed in the tab zone. By logging as Admin/Developer you will see the app in the tab list.

But now let’s say that you added testers to test the app while it is in sandbox mode. The testers don’t see the app listed in the client facebook page. It is suppose that he/she should see it. For that there may be other reasons like SSL issue, app not properly setup in the developer area etc. But in case everything is good and still app is missing from the tabs list for testers.

The common reason for this is that facebook only allow 12 tabs at a time on a page, so a new tab for that app will not be there. But if the tester access the app directly through url, he can see the app.

So the solution to this will be to swap the newly created app within the 1st 12 apps. While logged in as Admin/Developer, go to the client page and list all the tabs by clicking on the button right hand side the tabs. That will show all the tabs. Now mouse over on the newly created app and click on the pencil/setting icon and swap it with any position you like but within the 12 tabs. Once you are done with that, check the page with tester account, and you will see the app listed there in the tabs. Facebook magic!