Home Facebook

Fixed: Cannot send session cache limiter – headers already sent

Okay, so many of you guys still ask me about how to fix these warning messages in our Facebook scripts. Today I'm going to give you two possible fixes that you can do. By the way, here's the warning message we want to remove:

Fix it by adding a session_start()

You can fix it by adding a session_start() on top of your PHP file, just right after your first line <?php tag. It looks like this:

Fix it by moving Facebook instance

You can fix it by moving the Facebook class and instance code on top of your PHP file. It would look like this:

If none of them worked, you can read more here.
Home Facebook

How Do You Start A Facebook Page?

Hi guys! Most of the top posts here in my blog is related to web development with Facebook. Many asks beforehand how to create a Facebook page where we will pull our data. So here’s a step by step tutorial on how to do such task.

How Do You Start A Facebook Page?

Our final output.

Photos are kinda small, you have to click each photos below to enlarge.

Step 1

Go to Facebook “Create A Page” section that can be found in this link: Create a Page. You should see this page:

Create a Facebook page.

Create a Facebook page.

Step 2

In this example, we are going to create a “Brand or Product” for our website. Click “Brand or Product” box and fill up the required filled.
On the “Category” dropdown, select “Website”.
On the “Brand or Product Name” field, I’ll enter “Mike Dalisay Works” for example.
Check “I agree to Facebook Pages Terms” checkbox.
It should look like this:

Creating a brand or product Facebook page.

Creating a brand or product Facebook page.

Step 3

Click the “Get Started” button. It will make you set up some information for your Facebook page such as profile picture, about, Facebook web address, and enable ads option. Just follow the flow.

Facebook page info set up.

Facebook page info set up.

Facebook page profile picture.

Facebook page profile picture.

Facebook page “About” info

Facebook page “About” info

Facebook web address.

Facebook web address.

Enable ads. You can click the skip button.

Enable ads. You can click the skip button.

Step 4

At this stage, you already have successfully created your Facebook page! Congrats! Now Facebook will give you some guidelines on how to use your Facebook page.

Like your own page.

Like your own page.

Invite others to like your page.

Invite others to like your page.

Do your first post!

Do your first post!

Home Facebook

Display Facebook Feed on Website Using PullFB Class

Update: Hi guys! I'm working on a new version of this code. Here's a sample LIVE DEMO. Let me know what you think! I'm going to post a new code and tutorial soon!

Hello guys! Today we are going to pull your Facebook page recent updates and display it to your website or to a webpage. This feature looks like a twitter widget (example is “My Twitter Updates” on the right sidebar of this site), but the posts were pulled from your Facebook page. This is good if you don’t want to use this Facebook Like Box social plugin and just want to show your page updates.

I updated the PullFB class a bit, to do this requirement. As I remember, this is one of the most requested feature, haha!
Our page_feeds.php code:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
        <title>The Code Of A Ninja – Pull Feeds From Facebook</title>
        <link href=”http://demo.codeofaninja.com/images/favicon.ico” rel=”SHORTCUT ICON”>
        <link rel=”stylesheet” type=”text/css” href=”css/style.css” />

    </head>
<body>

<div style=’font-size: 16px; font-weight: bold; margin: 0 0 10px 0;’>
    This demo is synchronized with this
    <a href=’https://www.facebook.com/CodeOfANinja’ target=’_blank’>
        Code of a Ninja Official Facebook Page Feed
    </a>
</div>

<?php
//change as you needed
date_default_timezone_set(‘Asia/Manila’);

echo “<p>Recent Updates from The Code of a Ninja</p>”;

//get page number
//if page num was not set, default to page 1
$page_num = isset( $_GET['page'] ) ? $_GET['page'] : 1;

//include our class
include ‘pull_fb.class.php’;

//pass appId, appSecret, and page number (anyway, we’re not using paging here)
$pull_fb = new PullFb( ‘change_to_your_app_id’, ‘change_to_your_app_secret’, $page_num );

//pass your fan page id
$feeds_result = $pull_fb->getFeeds( ’107786425949934′ );

//echo “<div>{$feeds_result->entries}</div>”;

foreach( $feeds_result->entries as $entries ){
    //just some time manipulation to suit my needs
    $ts = strtotime( “{$entries->published} +60 minutes” );

    echo “<div class=’object_item’ style=’text-align:left;’>”;
        //just for the sake of styling
        echo str_replace( “<br/><br/>”, “<br/>”, $entries->content );
        echo “<div class=’published_details’>”;
            echo “Published on “ . date( ‘m-d-Y H:i:s’, $ts );
            echo ” | <a href=’” . $entries->alternate . “‘ target=’_blank’>FB Link</a>”;
        echo “</div>”;
    echo “</div>”;

}
?>

  </body>
</html>

You can just copy and paste our updated PullFb class if you want. The code looks like this now:

<?php
require ‘fb-sdk/src/facebook.php’;

class PullFb{

    //set properties
    public $facebook;
    public $page_num;

    //number of items you want to see per page
    //you can add for other objects such as videos, etc.
    public $albums_per_page = 2;
    public $photos_per_page = 4;

    //if you want to exclude some albums like the Profile Pictures and Wall Photos, do something like:
    //$excluded_albums = “AND name <> ‘Profile Pictures’ AND name <> ‘Wall Photos’”;
    //in my example, I’m gonna exclude the wall photos only
    public $excluded_albums = “AND name <> ‘Wall Photos’”;

    //same with excluding photos, just state the pid
    public $excluded_photos = “AND pid <> ’221167777906963_1513599′ AND pid <> ’221167777906963_1513596′”;

    public function __construct( $appId, $secret, $page_num ){

        //create facebook instance
        $this->facebook = new Facebook(array(
          ‘appId’  => $appId,
          ‘secret’ => $secret,
          ‘cookie’ => true, // enable optional cookie support
        ));

        //for the page number
        $this->page_num = $page_num;
    }

    //get feeds in json format and then decode it using json_decode function
    public function getFeeds( $id ){
        $url = “https://www.facebook.com/feeds/page.php?id={$id}&format=json”;
        $feeds = json_decode( file_get_contents( $url ) );
        return $feeds;
    }

    //this will get facebook albums based on the $owner or fan page id
    public function getAlbums( $owner ){

        //we have to get the total number of albums first
        //i don’t know why the count function is not working
        $fql = “SELECT aid FROM album WHERE owner = {$owner} {$this->excluded_albums}“;

        //calculatePaging() will give us the paging settings
        //pass the fql and type of object
        $settings = $this->calculatePaging( $fql, ‘album’ );

        //get start and end limit for the next fql query
        $start_limit = $settings['start_limit'];
        $end_limit = $settings['end_limit'];

        //in this query we will include the paging based on the page number
        $fql = “SELECT
                    aid, object_id, owner, cover_pid, cover_object_id, name, created, modified,
                    description, location, size, link, visible, modified_major, edit_link,
                    type, can_upload, photo_count, video_count,
                    like_info, comment_info
                FROM
                    album
                WHERE
                    owner = {$owner} {$this->excluded_albums}
                LIMIT
                    {$start_limit}, {$end_limit}“;

        //set params
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset
        $result = $this->facebook->api( $params );

        //we will include the settings to our result variable
        $result['pull_fb'] = $settings;

        return $result;
    }

    //this function was made for paging
    public function calculatePaging( $fql, $type ){

        //set the params based on passed fql
        //to count the total number of records
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset
        $result = $this->facebook->api( $params );

        //get the total number of items
        $number_of_items = count( $result );

        //we will have the following calculations for the pagination
        //we just need some simple math

        //decide how many albums to show per page
        //values was actually declared as class property
        //you can easily add for other types of object
        if( $type == ‘album’ ){
            $items_per_page = $this->albums_per_page;
        }else if( $type == ‘photo’ ){
            $items_per_page = $this->photos_per_page;
        }

        //this is the current page
        $curr_page = $this->page_num;

        //previous page will be the current page MINUS one
        $prev_page = $curr_page - 1;

        //next page will be the current page PLUS one
        $next_page = $curr_page + 1;

        //no need to calculate for the first page, obviously, it’s 1
        //calculate last page
        $last_page = round( $number_of_items / $items_per_page );

        //detect if prev button will be visible
        if( $curr_page != 1 ){
            $prev_button = true;
        }

        //get $albums_shown value
        //it is the number of photos from the first page up to the current page
        $items_shown = $items_per_page * $curr_page;

        //detect if next button will be visible
        //if the $number_of_albums were still higher than the $albums_shown, show the next page button,
        //but if they are equal, don’t show the next page button
        if( $number_of_items > $items_shown ){
            $next_button = true;
        }

        //get start limit for the fql query
        $start_limit = $items_per_page * $prev_page;

        //get end limit
        //i’m not sure why i had to + 1, maybe it’s a facebook bug?
        $end_limit = $items_per_page + 1;

        //these are the values or settings returned
        //i made it to an array
        $settings = array(
            ‘number_of_items’ => $number_of_items,
            ‘prev_page’ => $prev_page,
            ‘next_page’ => $next_page,
            ‘prev_button’ => $prev_button,
            ‘next_button’ => $next_button,
            ‘start_limit’ => $start_limit,
            ‘end_limit’ => $end_limit,
            ‘last_page’ => $last_page
        );

        return $settings;
    }

    //to get photos of an album, we have to pass the album id
    public function getPhotos( $album_id ){

        //we have to get total number of photos first
        //i don’t know why the count function is not working
        $fql = “SELECT object_id FROM photo WHERE aid = ‘” . $album_id .“‘ ORDER BY position DESC”;

        //calculatePaging() will give us the paging settings
        //pass the fql and type of object, this is ‘photo’
        $settings = $this->calculatePaging( $fql, ‘photo’ );

        //get start and end limit for the next fql query
        $start_limit = $settings['start_limit'];
        $end_limit = $settings['end_limit'];

        //query the photos
        $fql = “SELECT
                        object_id, pid, src_small, src, src_big, link, caption, created, modified, position, like_info, comment_info
                    FROM
                        photo
                    WHERE
                        aid = ‘” . $album_id .“‘ {$this->excluded_photos}
                    ORDER BY
                        position DESC
                    LIMIT
                        {$start_limit}, {$end_limit}“;

        //set the parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get photos recordset
        $result = $this->facebook->api( $params );

        //add the settings to the result
        $result['pull_fb'] = $settings;

        return $result;
    }

    //to get album cover, you need to pass the cover_id or id of the photo
    public function getAlbumCover( $cover_pid ){

        //get album cover query
        $fql = “select src_big from photo where pid = ‘” . $cover_pid . “‘”;

        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //run the query
        $result = $this->facebook->api( $params );

        //the the value and return it
        $value = $result[0]['src_big'];

        return $value;
    }

    //to get comments, you need to pass the object id, it can be a video, photo, album etc
    //check the fql tables to know object id https://developers.facebook.com/docs/reference/fql/
    public function getComments( $object_id ){

        //query the comment
        $fql = “SELECT
                text, time, fromid, likes
            FROM
                comment
            WHERE
                object_id = “ . $object_id;

        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset
        $result = $this->facebook->api( $params );

        return $result;
    }

    //to get profile name, you need to pass fromid or the profile id
    public function getProfileName( $fromid ){
        //query commenter / profile name
        $fql = “SELECT
                name
            FROM
                profile
            WHERE
                id = “ . $fromid;

        //set the paramters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get the resulting value
        $result = $this->facebook->api( $params );
        $value = $result[0]['name'];

        return $value;
    }

    //this time we will just get the profile name and profile thumbnail
    public function getProfileDetails( $fromid ){

        //select name and pic_square which can be used as profile thumbnail
        $fql = “SELECT
                name, pic_square
            FROM
                profile
            WHERE
                id = “ . $fromid;

        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get and return the result
        $result = $this->facebook->api( $params );

        return $result;
    }

    //to get album name, pass the album id
    public function getAlbumName( $aid ){

        //query album name
        $fql = “SELECT
                name
            FROM
                album
            WHERE
                aid = ‘{$aid}‘”;

        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //return result value for album name
        $result = $this->facebook->api( $params );
        $value = $result[0]['name'];

        return $value;
    }

    //to get events, pass the uid or you fan page id
    public function getEvents( $uid ){
        //query the events
        //we will eid, name, pic_big, start_time, end_time, location, description  this time
        //but there are other data that you can get on the event table (https://developers.facebook.com/docs/reference/fql/event/)
        //as you’ve noticed, we have TWO select statement here
        //since we can’t just do “WHERE creator = your_fan_page_id”.
        //only eid is indexable in the event table, so we have to retrieve
        //list of events by eids
        //and this was achieved by selecting all eid from
        //event_member table where the uid is the id of your fanpage.
        //*yes, you fanpage automatically becomes an event_member
        //once it creates an event
        $fql = “SELECT
                    eid, name, pic_big, start_time, end_time, location, description
                FROM
                    event
                WHERE
                    eid IN ( SELECT eid FROM event_member WHERE uid = {$uid} )
                ORDER BY start_time asc”;

        //set parameters
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset and retur results
        $result = $this->facebook->api($param);
        return $result;
    }

    //this function will get the profile invited to the event
    //pass eid or event id
    public function getEventMembers( $eid ){

        //query the members
        $fql = “SELECT
                    eid, uid, rsvp_status
                FROM
                    event_member
                where eid = {$eid}“;

        //set params
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get result and return it
        $result = $this->facebook->api( $param );
        return $result;
    }

    //get the videos
    //pass the owner or the fan page id
    public function getVideos( $owner ){

        //query to get videos
        //specify you fan page id, I got 221167777906963
        //you can also use the LIMIT clause here if you want to show limited number of videos only
        $fql = “SELECT
                    vid, owner, title, description, thumbnail_link,
                    embed_html, updated_time, created_time, link
                FROM
                    video
                WHERE owner={$owner}“;

        //set parameters
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset and return it
        $result = $this->facebook->api($param);
        return $result;
    }

}
?>

Thanks for reading this [post title here]!

Home Facebook

Display Facebook Data To Website Using PullFb Class

Update: Hi guys! The script on this page is not actively developed anymore, but we have the alternatives! Learn how to display Facebook page data using our links below:

Hi guys! Today I’m going to post about this class I made for pulling data from your Facebook fan page.

In this post we are going to pull data such as photo albums, photos, events, event members, videos and their corresponding likes and comments.

I previously posted about pulling Facebook photos, events and videos with separate but simple methods.

Now this class (pull_fb.class.php), tries to work out all those functions in one with some newly added features.

Display Facebook Data To Website Using PullFb Class

Facebook Database – Facebook API – Your Website

Some people says the old Facebook PHP SDK (2.1.2) don’t work so I used the latest PHP SDK version 3.0.1 that can be downloaded on GitHub. And for this post, the you can download the code I used here:

DOWNLOAD CODE

Facebook Photos

For pulling Facebook albums and photos to website, this version has some new features which includes Facebook like count, comments, comments like count and pagination. Here’s a sample code on how I used the PullFb class to achieve it.

LIVE DEMO

Our index.php code:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
        <title>The Code Of A Ninja – Pull Photos From Facebook</title>
        <link href=”http://demo.codeofaninja.com/images/favicon.ico” rel=”SHORTCUT ICON”>
        <link rel=”stylesheet” type=”text/css” href=”css/style.css” />
       
    </head>
<body>

<div style=’font-size: 16px; font-weight: bold; margin: 0 0 10px 0;’>
    This demo is synchronized with this
    <a href=’https://www.facebook.com/pages/COAN-Dummy-Page/221167777906963?sk=photos’>
        Dummy Page Album
    </a>
</div>

<?php
echo “<p>COAN Dummy Page Albums</p>”;

//get page number
//if page num was not set, default to page 1
$page_num = isset( $_GET['page'] ) ? $_GET['page'] : 1;

//include our class
include ‘pull_fb.class.php’;

//pass appId, appSecret, and page number
$pull_fb = new PullFb( ‘change_to_your_app_id’, ‘change_to_your_app_secret’, $page_num );

//pass your fan page id
$album_result = $pull_fb->getAlbums( ’221167777906963′ );

//loop through the albums
foreach( $album_result as $key => $value ){
   
    if( trim( $key ) != ‘pull_fb’ ){ //because pull_fb is the settings for paging
   
        //pass album cover photo id to get album cover image
        $album_cover = $pull_fb->getAlbumCover( $value['cover_pid'] );
       
        //display the album details
        echo “<div class=’object_item’>”;
           
            //album cover
            echo “<div class=’field_item’ style=’height:auto;’>”;
                echo “<div class=’lbl’>Album Cover Photo:</div>”;
                echo “<a href=’show_photos.php?aid=” . $value['aid'] . “‘>”;
                    echo “<img src=’$album_cover‘ border=’1′ width=’400px’>”;
                echo “</a>”;
            echo “</div>”;
           
            //album name
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Name:</div>”;
                echo “<div class=’val’>” . $value['name'] . “</div>”;
            echo “</div>”;
           
            //album date created
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Created Date:</div>”;
                echo “<div class=’val’>” . date( ‘l, F d, Y h:i:s A’, $value['created'] ) . “</div>”;
            echo “</div>”;

            //description
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Description:</div>”;
                $description = empty( $value['description'] ) ? “N/A” : $value['description'];
                echo “<div class=’val’>” . $description . “</div>”;
            echo “</div>”;
           
            //where album photos were taken
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Location:</div>”;
                $location = empty( $value['location'] ) ? “N/A” : $value['location'];
                echo “<div class=’val’>” . $location . “</div>”;
            echo “</div>”;
           
            //link to facebook
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album FB Link:</div>”;
                echo “<div class=’val’><a href=’” . $value['link'] . “‘ target=’_blank’>Click Here!</a></div>”;
            echo “</div>”;
           
            //how many photos in the album
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Photo Count:</div>”;
                echo “<div class=’val’>” . $value['photo_count'] . “</div>”;
            echo “</div>”;
           
            //videos included in the album
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Video Count:</div>”;
                echo “<div class=’val’>” . $value['video_count'] . “</div>”;
            echo “</div>”;
           
            //number of likes
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Like Count:</div>”;
                echo “<div class=’val’>” . $value['like_info']['like_count'] . ” people like this album</div>”;
            echo “</div>”;
           
            //number of comments
            echo “<div class=’field_item’ style=’height:auto;’>”;
                echo “<div class=’lbl’>Album Comment Count:</div>”;
                echo “<div class=’val’>” . $value['comment_info']['comment_count'] . ” comments</div>”;
           
            //pass the album object id to get comments
            $comments_result = $pull_fb->getComments( $value['object_id'] );
           
            //loop through comments
            foreach( $comments_result as $key => $value ){
           
                //you can set values to variables
                $text = $value['text'];
                $time = date( ‘l, F d, Y h:i:s A’, $value['time'] );
                $fromid = $value['fromid'];
                $likes = $value['likes'];
               
                //get commenter’s name by passing pass fromid
                $profile_name = $pull_fb->getProfileName( $fromid );
               
                //display the comment details
                echo “<div style=’display:block; text-align:left; float:left; border-bottom:thin solid blue; width:100%;’>”;
                    echo “<div>”;
                   
                        //provide link to commenter’s profile
                        echo “<a href=’https://www.facebook.com/profile.php?id={$fromid}‘ target=’_blank’>”;
                            echo “{$profile_name}“;
                        echo “</a>”;
                        echo ” says:”;
                       
                    echo “</div>”;
                   
                    //display comment
                    echo “<div style=’font-style:italic;’>{$text}</div>”;
                   
                    //the time and number of likes of the comment
                    echo “<div>{$time} | {$likes} people liked this comment</div>”;
                echo “</div>”;
               
            }
           
            echo “<div style=’clear:both;’></div>”;
            echo “</div>”;
        echo “</div>”; //end object_item
        echo “<div style=’clear:both;’></div>”;
    }
   
}

//paging here
//show the page buttons based on the settings returned from getAlbums()
echo “<div style=’font-size:24px;’>”;
    //paging here  
    if( $value['prev_button'] ){
        echo “<a href=’index.php?page=1′>&#9668;&#9668; First</a> “;
        echo “<a href=’index.php?page={$value['prev_page']}‘>&#9668; Previous</a> “;
    }
   
    if( $value['next_button'] ){
        echo “<a href=’index.php?page={$value['next_page']}‘>Next &#9658;</a> “;
        echo “<a href=’index.php?page={$value['last_page']}‘>Last &#9658;&#9658;</a>”;
    }
echo “</div>”;

?>

  </body>
</html>

Our show_photos.php code

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
        <title>The Code Of A Ninja – Pull Data From Facebook</title>
        <link href=”http://demo.codeofaninja.com/images/favicon.ico” rel=”SHORTCUT ICON”>
        <link rel=”stylesheet” type=”text/css” href=”css/style.css” />
       
    </head>
<body>

<div style=’font-size: 16px; font-weight: bold; margin: 0 0 10px 0;’>
    This demo is synchronized with this
    <a href=’https://www.facebook.com/pages/COAN-Dummy-Page/221167777906963?sk=photos’>
        Dummy Page Album
    </a>
</div>

<?php
//get page number
//if page num was not set, default to page 1
$page_num = isset( $_GET['page'] ) ? $_GET['page'] : 1;

//get album id from the url
$album_id = empty( $_REQUEST['aid'] ) ? die( “Album ID cannot be empty” ) : $_REQUEST['aid'];

//include our class
include ‘pull_fb.class.php’;
   
//pass appId, appSecret, and page number
$pull_fb = new PullFb( ‘change_to_your_app_id’, ‘change_to_your_app_secret’, $page_num );

//get the album name based on album id
$album_name = $pull_fb->getAlbumName( $album_id );

//provide link to albums
echo “<div><a href=’http://demo.codeofaninja.com/tutorials/pull-facebook-data/’>Back To Albums</a> | Album Name: <b>” . $album_name . “</b></div>”;

//get photos of the album
$photos_result = $pull_fb->getPhotos( $album_id );

//loop through the photos
foreach( $photos_result as $key => $value ){
   
    if( trim( $key ) != ‘pull_fb’ ){ //because pull_fb is the settings
   
        //set caption to ‘None.’ if no caption was set
        $caption = !empty( $value['caption'] ) ? $value['caption'] : “None.”;
       
        //display the photo details
        echo “<div class=’object_item’>”;
       
            //the photo
            echo “<div class=’field_item’ style=’height:auto;’>”;
                echo “<div class=’lbl’>Photo:</div>”;
                echo “<a href=““ . $value['src_big'] . ““ title=““ . $caption . ““ rel=’lightbox’>”;
                    echo “<img src=’” . $value['src_big'] . “‘ border=’1′ width=’400px’ />”;
                echo “</a>”;
            echo “</div>”;
           
            //caption
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Photo ID:</div>”;
                echo “<div class=’val’>” . $value['pid'] . “</div>”;
            echo “</div>”;
           
            //caption
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Caption:</div>”;
                echo “<div class=’val’>” . $caption . “</div>”;
            echo “</div>”;
           
            //date created
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Created Date:</div>”;
                echo “<div class=’val’>” . date( ‘l, F d, Y’, $value['created'] ) . “</div>”;
            echo “</div>”;

            //date modified
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Modified Date:</div>”;
                echo “<div class=’val’>” . date( ‘l, F d, Y’, $value['modified'] ) . “</div>”;
            echo “</div>”;
           
            //photo position in the album
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Photo Position:</div>”;
                echo “<div class=’val’>” . $value['position'] . “</div>”;
            echo “</div>”;
           
            //link to facebook
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album FB Link:</div>”;
                echo “<div class=’val’>”;
                    echo “<a href=’” . $value['link'] . “‘ target=’_blank’>Click Here!</a>”;
                echo “</div>”;
            echo “</div>”;
           
            //number of likes
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Album Like Count:</div>”;
                echo “<div class=’val’>” . $value['like_info']['like_count'] . ” people like this</div>”;
            echo “</div>”;
           
            //number of comments
            echo “<div class=’field_item’ style=’height:auto;’>”;
                echo “<div class=’lbl’>Album Comment Count:</div>”;
                echo “<div class=’val’>” . $value['comment_info']['comment_count'] . ” comments</div>”;
               
                //pass the object id to get comments of this photo
                $comments_result = $pull_fb->getComments( $value['object_id'] );
               
                //loop through retrieved comments
                foreach( $comments_result as $key => $value ){
               
                    //you can set the values to variables
                    $text = $value['text'];
                    $time = date( ‘l, F d, Y h:i:s A’, $value['time'] );
                    $fromid = $value['fromid'];
                    $likes = $value['likes'];
                   
                    //get commenter’s name by passing pass fromid
                    $profile_name = $pull_fb->getProfileName( $fromid );
                   
                    //display the comment details
                    echo “<div style=’display:block; text-align:left; float:left; border-bottom:thin solid blue; width:100%;’>”;
                        echo “<div>”;
                            //provide link to commenter’s profile
                            echo “<a href=’https://www.facebook.com/profile.php?id={$fromid}‘ target=’_blank’>”;
                                echo “{$profile_name}“;
                            echo “</a>”;
                            echo ” says:”;
                        echo “</div>”;
                       
                        //display comment
                        echo “<div style=’font-style:italic;’>{$text}</div>”;
                       
                        //the time and number of likes of the comment
                        echo “<div>{$time} | {$likes} people liked this comment</div>”;
                    echo “</div>”;
                   
                }
               
                echo “<div style=’clear:both;’></div>”;
               
            echo “</div>”;
           
        echo “</div>”;
   
    }
   
}

    //paging here
    //show the page buttons based on the settings returned from getPhotos()
    echo “<div style=’font-size:24px;’>”;
       
        if( $value['prev_button'] ){
            echo “<a href=’show_photos.php?aid={$_GET['aid']}&page=1′>&#9668;&#9668; First</a> “;
            echo “<a href=’show_photos.php?aid={$_GET['aid']}&page={$value['prev_page']}‘>&#9668; Previous</a> “;
        }
       
        if( $value['next_button'] ){
            echo “<a href=’show_photos.php?aid={$_GET['aid']}&page={$value['next_page']}‘>Next &#9658;</a> “;
            echo “<a href=’show_photos.php?aid={$_GET['aid']}&page={$value['last_page']}‘>Last &#9658;&#9658;</a>”;
        }
    echo “</div>”;
   
?>

    <!– START JLIGHTBOX –>
   
    <link rel=”stylesheet” type=”text/css” href=”jQuery-lightbox/css/jquery.lightbox-0.5.css” media=”screen” />
    <script type=”text/javascript” src=”jQuery-lightbox/js/jquery.js”></script>
    <script type=”text/javascript” src=”jQuery-lightbox/js/jquery.lightbox-0.5.js”></script>
   
    <script type=”text/javascript”>
   
        $(function() {
            $(‘a[@rel*=lightbox]‘).lightBox(); // Select all links that contains lightbox in the attribute rel
        });
   
    </script>
   
    <!– END JLIGHTBOX –>
   
  </body>
</html>

Facebook Events

For pulling Facebook events, it features pulling the event members and their corresponding RSVP status. As for the paging, maybe you can do the same approach I used in pulling Facebook albums and photos.

LIVE DEMO

Our show_events.php code:

<!DOCTYPE html>
<html xmlns=”http://www.w3.org/1999/xhtml”
    xmlns:fb=”http://www.facebook.com/2008/fbml”>
        <head>
            <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
            <title>The Code Of A Ninja – Pull Events From Facebook</title>
            <link href=”http://demo.codeofaninja.com/images/favicon.ico” rel=”SHORTCUT ICON”>
            <link rel=”stylesheet” type=”text/css” href=”css/style.css” />
        </head>
<body>
<?php

//get page number
//if page num was not set, default to page 1
$page_num = isset( $_GET['page'] ) ? $_GET['page'] : 1;

//we have to set timezone to California
date_default_timezone_set(‘America/Los_Angeles’);

//include our class
include ‘pull_fb.class.php’;

//pass appId, appSecret, and page number
$pull_fb = new PullFb( ‘change_to_your_app_id’, ‘change_to_your_app_secret’, $page_num );

//just a heading
echo “<div style=’font-weight: bold; margin: 0 0 20px 0;’>”;
echo “This event list is synchronized with this “;
echo “<a href=’https://www.facebook.com/pages/COAN-Dummy-Page/221167777906963?sk=events’>”;
echo “COAN Dummy Page Events</a></div>”;

//pass your fan page id
$event_result = $pull_fb->getEvents( ’221167777906963′ );

//looping through retrieved data
foreach( $event_result as $key => $value ){

    //see here http://php.net/manual/en/function.date.php for the date format I used
    //The pattern string I used ‘l, F d, Y g:i a’
    //will output something like this: July 30, 2015 6:30 pm

    //getting ‘start’ and ‘end’ date,
    //’l, F d, Y’ pattern string will give us
    //something like: Thursday, July 30, 2015
    $start_date = date( ‘l, F d, Y’, $value['start_time'] );
    $end_date = date( ‘l, F d, Y’, $value['end_time'] );

    //getting ‘start’ and ‘end’ time
    //’g:i a’ will give us something
    //like 6:30 pm
    $start_time = date( ‘g:i a’, $value['start_time'] );
    $end_time = date( ‘g:i a’, $value['end_time'] );

    //display the album details
    echo “<div class=’object_item’>”;
   
    //event image
    echo “<div style=’float: left; margin: 0 8px 0 0;’>”;
            echo “<img src={$value['pic_big']} />”;
    echo “</div>”;
       
        echo “<div style=’float: left;’>”;
           
            //event name
            echo “<div class=’field_item’>”;
                echo “<div class=’val’ style=’font-size: 26px’>”;
                    echo “<a href=’https://www.facebook.com/events/{$value['eid']}/’ target=’_blank’>”;
                        echo $value['name'];
                    echo “</a>”;
                echo “</div>”;
            echo “</div>”;
           
            //event date / time
            echo “<div class=’field_item’>”;
                echo “<div class=’val’>”;
                if( $start_date == $end_date ){
                        //if $start_date and $end_date is the same
                        //it means the event will happen on the same day
                        //so we will have a format something like:
                        //July 30, 2015 – 6:30 pm to 9:30 pm
                        echo “on {$start_date} – {$start_time} to {$end_time}“;
                }else{
                        //else if $start_date and $end_date is NOT the equal
                        //it means that the event will will be
                        //extended to another day
                        //so we will have a format something like:
                        //July 30, 2013 9:00 pm to Wednesday, July 31, 2013 at 1:00 am
                        echo “on {$start_date} {$start_time} to {$end_date} at {$end_time}“;
                }
                echo “</div>”;
            echo “</div>”;
           
            //event location
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>Location:</div>”;
                echo “<div class=’val’>” . $value['location'] . “</div>”;
            echo “</div>”;
           
            //event description
            echo “<div class=’field_item’>”;
                echo “<div class=’lbl’>More Info:</div>”;
                echo “<div class=’val’>” . $value['description'] . “</div>”;
            echo “</div>”;
       
            echo “<div style=’clear: both’></div>”;
           
            //get people invited to the event
            $event_members = $pull_fb->getEventMembers( $value['eid'] );
           
            //loop through event members
            foreach( $event_members as $event_member ){
           
                //get profile pic and name of the event member
                $result = $pull_fb->getProfileDetails( $event_member['uid'] );
                $pic_square = $result[0]['pic_square'];
                $name = $result[0]['name'];
               
                //display event member details
                echo “<div style=’padding:8px 0; text-align:left;’>”;
               
                    //small square profile pic
                    echo “<div style=’float:left; width:40px;’>”;
                        echo “<img src=’{$pic_square}‘ width=’30px’ height=’30px’ />”;
                    echo “</div>”;
                   
                    //provide link to event member profile
                    echo “<div>Name: “;
                        echo “<a href=’https://www.facebook.com/profile.php?id={$event_member['uid']}‘ target=’_blank’>”;
                            echo $name;
                        echo “</a>”;
                    echo “</div>”;
                   
                    //rsvp status
                    echo “<div>RSVP Status: {$event_member['rsvp_status']}</div>”;
                   
                echo “</div>”;
            }
           
        echo “</div>”;
   
    echo “<div style=’clear: both’></div>”;
   
    echo “</div>”;
       
}

?>
</body>
</html>

Facebook Videos

For pulling Facebook videos, it features pulling the comments and likes. As for the paging, maybe you can do the same approach I used in pulling Facebook albums and photos.

LIVE DEMO

Our show_videos.php code:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
        <title>The Code Of A Ninja – Pull Videos From Facebook</title>
        <link href=”http://demo.codeofaninja.com/images/favicon.ico” rel=”SHORTCUT ICON”>
        <link rel=”stylesheet” type=”text/css” href=”css/style.css” />
    </head>
<body>

<div class=’page_title’>
    These videos are synchronized with this
    <a href=’https://www.facebook.com/video/?id=221167777906963′ target=’_blank’>
        Dummy Page Videos
    </a>
</div>
<?php

//get page number
//if page num was not set, default to page 1
$page_num = isset( $_GET['page'] ) ? $_GET['page'] : 1;

//include our class
include ‘pull_fb.class.php’;

//pass appId, appSecret, and page number
$pull_fb = new PullFb( ‘change_to_your_app_id’, ‘change_to_your_app_secret’, $page_num );

//pass your fan page id
$videos_result = $pull_fb->getVideos( ’221167777906963′ );

//loop through each videos
foreach( $videos_result as $keys => $value ){
   
    //display video details
    echo “<div class=’object_item’>”;
   
        //video embed html
        echo $value['embed_html'];
       
        //video title
        echo “<div class=’field_item’>”;
            echo “<div class=’lbl’>Title:</div>”;
            echo “<div class=’val’>” . $value['title'] . “</div>”;
        echo “</div>”;
       
        //date created
        echo “<div class=’field_item’>”;
            echo “<div class=’lbl’>Date Created:</div>”;
            echo “<div class=’val’>” . date( ‘l, F d, Y’, $value['created_time'] ) . “</div>”;
        echo “</div>”;
       
        //video description
        echo “<div class=’field_item’>”;
            echo “<div class=’lbl’>Description:</div>”;
            echo “<div class=’val’>” . $value['description'] . “</div>”;
        echo “</div>”;
       
        //fb link to video
        echo “<div class=’field_item’>”;
            echo “<div class=’lbl’>FB Link:</div>”;
            echo “<div class=’val’><a href=’” . $value['link'] . “‘ target=’_blank’>Click Here!</a></div>”;
        echo “</div>”;
                   
        echo “<div class=’field_item’ style=’height:auto;’>”;
       
        //vid is the object id of video, pass to get the comments
        $comments_result = $pull_fb->getComments( $value['vid'] );
       
        //loop through comments
        foreach( $comments_result as $key => $value ){
       
            //you can set values to variables
            $text = $value['text'];
            $time = date( ‘l, F d, Y h:i:s A’, $value['time'] );
            $fromid = $value['fromid'];
            $likes = $value['likes'];
           
            //get commenter’s name by passing pass fromid
            $profile_name = $pull_fb->getProfileName( $fromid );
           
            //display the comment details
            echo “<div style=’display:block; text-align:left; float:left; border-bottom:thin solid blue; width:100%;’>”;
                echo “<div>”;
                    //provide link to commenter’s profile
                    echo “<a href=’https://www.facebook.com/profile.php?id={$fromid}‘ target=’_blank’>”;
                        echo “{$profile_name}“;
                    echo “</a>”;
                    echo ” says:”;
                echo “</div>”;
               
                //display comment
                echo “<div style=’font-style:italic;’>{$text}</div>”;
               
                //the time and number of likes of the comment
                echo “<div>{$time} | {$likes} people liked this comment</div>”;
            echo “</div>”;
           
        }

        echo “<div style=’clear:both;’></div>”;
        echo “</div>”;
        echo “</div>”;
    echo “</div>”;
   
}

?>
   
  </body>
</html>

June 9, 2012 Update: Display Facebook Feed on Website

PullFB Class

Now here’s the code of our class pull_fb.class.php

<?php
require ‘fb-sdk/src/facebook.php’;

class PullFb{
   
    //set properties
    public $facebook;
    public $page_num;
   
    //number of items you want to see per page
    //you can add for other objects such as videos, etc.
    public $albums_per_page = 2;
    public $photos_per_page = 4;
   
    //if you want to exclude some albums like the Profile Pictures and Wall Photos, do something like:
    //$excluded_albums = “AND name <> ‘Profile Pictures’ AND name <> ‘Wall Photos’”;
    //in my example, I’m gonna exclude the wall photos only
    public $excluded_albums = “AND name <> ‘Wall Photos’”;
   
    //same with excluding photos, just state the pid
    public $excluded_photos = “AND pid <> ’221167777906963_1513599′ AND pid <> ’221167777906963_1513596′”;
   
    public function __construct( $appId, $secret, $page_num ){
       
        //create facebook instance
        $this->facebook = new Facebook(array(
          ‘appId’  => $appId,
          ‘secret’ => $secret,
          ‘cookie’ => true, // enable optional cookie support
        ));
       
        //for the page number
        $this->page_num = $page_num;
    }
   
    //this will get facebook albums based on the $owner or fan page id
    public function getAlbums( $owner ){
       
        //we have to get the total number of albums first
        //i don’t know why the count function is not working
        $fql = “SELECT aid FROM album WHERE owner = {$owner} {$this->excluded_albums}“;
       
        //calculatePaging() will give us the paging settings
        //pass the fql and type of object
        $settings = $this->calculatePaging( $fql, ‘album’ );
       
        //get start and end limit for the next fql query
        $start_limit = $settings['start_limit'];
        $end_limit = $settings['end_limit'];
       
        //in this query we will include the paging based on the page number
        $fql = “SELECT
                    aid, object_id, owner, cover_pid, cover_object_id, name, created, modified,
                    description, location, size, link, visible, modified_major, edit_link,
                    type, can_upload, photo_count, video_count,
                    like_info, comment_info
                FROM
                    album
                WHERE
                    owner = {$owner} {$this->excluded_albums}
                LIMIT
                    {$start_limit}, {$end_limit}“;
                   
        //set params
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get recordset
        $result = $this->facebook->api( $params );
       
        //we will include the settings to our result variable
        $result['pull_fb'] = $settings;
       
        return $result;
    }

    //this function was made for paging
    public function calculatePaging( $fql, $type ){
   
        //set the params based on passed fql
        //to count the total number of records
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get recordset
        $result = $this->facebook->api( $params );
       
        //get the total number of items
        $number_of_items = count( $result );
       
        //we will have the following calculations for the pagination
        //we just need some simple math
       
        //decide how many albums to show per page
        //values was actually declared as class property
        //you can easily add for other types of object
        if( $type == ‘album’ ){
            $items_per_page = $this->albums_per_page;
        }else if( $type == ‘photo’ ){
            $items_per_page = $this->photos_per_page;
        }
       
        //this is the current page
        $curr_page = $this->page_num;
       
        //previous page will be the current page MINUS one
        $prev_page = $curr_page - 1;
       
        //next page will be the current page PLUS one
        $next_page = $curr_page + 1;
       
        //no need to calculate for the first page, obviously, it’s 1
        //calculate last page
        $last_page = round( $number_of_items / $items_per_page );
       
        //detect if prev button will be visible
        if( $curr_page != 1 ){
            $prev_button = true;
        }
       
        //get $albums_shown value
        //it is the number of photos from the first page up to the current page
        $items_shown = $items_per_page * $curr_page;
       
        //detect if next button will be visible
        //if the $number_of_albums were still higher than the $albums_shown, show the next page button,
        //but if they are equal, don’t show the next page button
        if( $number_of_items > $items_shown ){
            $next_button = true;
        }
       
        //get start limit for the fql query
        $start_limit = $items_per_page * $prev_page;
       
        //get end limit
        //i’m not sure why i had to + 1, maybe it’s a facebook bug?
        $end_limit = $items_per_page + 1;
       
        //these are the values or settings returned
        //i made it to an array
        $settings = array(
            ‘number_of_items’ => $number_of_items,
            ‘prev_page’ => $prev_page,
            ‘next_page’ => $next_page,
            ‘prev_button’ => $prev_button,
            ‘next_button’ => $next_button,
            ‘start_limit’ => $start_limit,
            ‘end_limit’ => $end_limit,
            ‘last_page’ => $last_page
        );
       
        return $settings;
    }
   
    //to get photos of an album, we have to pass the album id
    public function getPhotos( $album_id ){

        //we have to get total number of photos first
        //i don’t know why the count function is not working
        $fql = “SELECT object_id FROM photo WHERE aid = ‘” . $album_id .“‘ ORDER BY position DESC”;
       
        //calculatePaging() will give us the paging settings
        //pass the fql and type of object, this is ‘photo’
        $settings = $this->calculatePaging( $fql, ‘photo’ );
       
        //get start and end limit for the next fql query
        $start_limit = $settings['start_limit'];
        $end_limit = $settings['end_limit'];
       
        //query the photos
        $fql = “SELECT
                        object_id, pid, src_small, src, src_big, link, caption, created, modified, position, like_info, comment_info
                    FROM
                        photo
                    WHERE
                        aid = ‘” . $album_id .“‘ {$this->excluded_photos}
                    ORDER BY
                        position DESC
                    LIMIT
                        {$start_limit}, {$end_limit}“;
       
        //set the parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get photos recordset
        $result = $this->facebook->api( $params );
       
        //add the settings to the result
        $result['pull_fb'] = $settings;
       
        return $result;
    }
   
    //to get album cover, you need to pass the cover_id or id of the photo
    public function getAlbumCover( $cover_pid ){
   
        //get album cover query
        $fql = “select src_big from photo where pid = ‘” . $cover_pid . “‘”;
       
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //run the query
        $result = $this->facebook->api( $params );
       
        //the the value and return it
        $value = $result[0]['src_big'];
       
        return $value;
    }
   
    //to get comments, you need to pass the object id, it can be a video, photo, album etc
    //check the fql tables to know object id https://developers.facebook.com/docs/reference/fql/
    public function getComments( $object_id ){
   
        //query the comment
        $fql = “SELECT
                text, time, fromid, likes
            FROM
                comment
            WHERE
                object_id = “ . $object_id;
       
        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get recordset
        $result = $this->facebook->api( $params );
       
        return $result;
    }
   
    //to get profile name, you need to pass fromid or the profile id
    public function getProfileName( $fromid ){
        //query commenter / profile name
        $fql = “SELECT
                name
            FROM
                profile
            WHERE
                id = “ . $fromid;
       
        //set the paramters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get the resulting value
        $result = $this->facebook->api( $params );
        $value = $result[0]['name'];
       
        return $value;
    }
   
    //this time we will just get the profile name and profile thumbnail
    public function getProfileDetails( $fromid ){
   
        //select name and pic_square which can be used as profile thumbnail
        $fql = “SELECT
                name, pic_square
            FROM
                profile
            WHERE
                id = “ . $fromid;
       
        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get and return the result
        $result = $this->facebook->api( $params );
       
        return $result;
    }
   
    //to get album name, pass the album id
    public function getAlbumName( $aid ){
   
        //query album name
        $fql = “SELECT
                name
            FROM
                album
            WHERE
                aid = ‘{$aid}‘”;
       
        //set parameters
        $params = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //return result value for album name
        $result = $this->facebook->api( $params );
        $value = $result[0]['name'];
       
        return $value;
    }
   
    //to get events, pass the uid or you fan page id
    public function getEvents( $uid ){
        //query the events
        //we will eid, name, pic_big, start_time, end_time, location, description  this time
        //but there are other data that you can get on the event table (https://developers.facebook.com/docs/reference/fql/event/)
        //as you’ve noticed, we have TWO select statement here
        //since we can’t just do “WHERE creator = your_fan_page_id”.
        //only eid is indexable in the event table, so we have to retrieve
        //list of events by eids
        //and this was achieved by selecting all eid from
        //event_member table where the uid is the id of your fanpage.
        //*yes, you fanpage automatically becomes an event_member
        //once it creates an event
        $fql = “SELECT
                    eid, name, pic_big, start_time, end_time, location, description
                FROM
                    event
                WHERE
                    eid IN ( SELECT eid FROM event_member WHERE uid = {$uid} )
                ORDER BY start_time asc”;
                               
        //set parameters
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );

        //get recordset and retur results
        $result = $this->facebook->api($param);
        return $result;
    }
   
    //this function will get the profile invited to the event
    //pass eid or event id
    public function getEventMembers( $eid ){
       
        //query the members
        $fql = “SELECT
                    eid, uid, rsvp_status
                FROM
                    event_member
                where eid = {$eid}“;
       
        //set params
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get result and return it
        $result = $this->facebook->api( $param );
        return $result;
    }
   
    //get the videos
    //pass the owner or the fan page id
    public function getVideos( $owner ){
   
        //query to get videos
        //specify you fan page id, I got 221167777906963
        //you can also use the LIMIT clause here if you want to show limited number of videos only
        $fql = “SELECT
                    vid, owner, title, description, thumbnail_link,
                    embed_html, updated_time, created_time, link
                FROM
                    video
                WHERE owner={$owner}“;
                   
        //set parameters
        $param = array(
            ‘method’ => ‘fql.query’,
            ‘query’ => $fql,
            ‘callback’ => ”
        );
       
        //get recordset and return it
        $result = $this->facebook->api($param);
        return $result;
    }
   
}
?>

This class can be easily modified or extend depending on your needs. You can play around different Facebook tables. Thanks for all your comments, suggestions, catches and contributions from the previous version. Feel free to do that again. :)

Regarding “Headers already sent…” issues, you can learn more fixing that here.

Note: A lot of you is trying this script in localhost, I think this won’t work. Please use this script on your real web host or buy from this bluehost link. Thanks!

Home Facebook

Display Facebook Videos To Your Website Script

Update 2: Hi guys! The script on this page is not actively developed anymore, but we have the alternatives!

Learn how to display other Facebook page data using these scripts too!

Hi guys! After my post about displaying Facebook photos and events to website, some of you requested this post – how to display Facebook Fan Page Videos to your website or webpage.

This one is useful if you want your Facebook videos to be shown in your website in a synchronized way.

Once you uploaded a video in your fan page, it will be automatically shown to your website too.

The advantages and risks of this is almost the same with what I discussed in my first post related to this one.

fbvideos

DOWNLOAD CODE LIVE DEMO

On the demo, I just uploaded some random videos of mine, taken using my Android phone. Haha!

In this post I’ll show you the code on:

  • How to pull videos from you Facebook Page and display it to your website.
  • We will retrieve just the video’s title, date it was created, the actual video and its description.

We were able to achieve this using the FQL, Facebook PHP SDK. As of this posting, the current PHP SDK version I downloaded is v.3.1.1. And of course, creating a Facebook App so you can have your own AppId and App Secret Id.

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
        <title>The Code Of A Ninja Dummy Page Videos</title>
        <style type=’text/css’>
            #page_title{
                font-size:16px;
                font-weight:bold;
                margin: 0 0 10px 0;
            }
           
            .date_created{
                font:italic 12px Arial, Helvetica, sans-serif;
                color:#fff;
                margin:0 0 5px 0;
            }
           
            .video_desc{
                font:12px Arial, Helvetica, sans-serif;
                color:#fff;
                margin:0 0 5px 0;
            }
           
            .video_item{
                width:320px; /*i tried it with a bigger video and it’s 400px*/
                float:left;
                padding:5px;
                background-color:brown;
                margin: 5px;
            }
           
            .video_title{
                font:20px Arial, Helvetica, sans-serif;
                font-weight:bold;
                color:#fff;
            }
        </style>
    </head>
<body>
<div class=’page_title’>
    These videos are synchronized with this
    <a href=’https://www.facebook.com/video/?id=221167777906963′ target=’_blank’>
        Dummy Page Videos
    </a>
</div>
<?php
require ‘fb-sdk/src/facebook.php’;

//specify you appId and secret
$facebook = new Facebook(array(
  ‘appId’  => ‘change_to_your_app_id’,
  ‘secret’ => ‘change_to_your_app_secret’,
  ‘cookie’ => true, // enable optional cookie support
));

//query to get videos
//specify you fan page id, I got 221167777906963
//you can also use the LIMIT clause here if you want to show limited number of videos only
$fql = “SELECT
            vid, owner, title, description, thumbnail_link,
            embed_html, updated_time, created_time
        FROM
            video
        WHERE owner=221167777906963″;
           
$param  =   array(
 ‘method’    => ‘fql.query’,
 ‘query’     => $fql,
 ‘callback’  => ”
);
$fqlResult   =   $facebook->api($param);

//loop through each videos
foreach( $fqlResult as $keys => $values ){
   
    echo “<div class=’video_item’>”;
        echo “<div class=’video_title’>” . $values['title'] . “</div>”;
        echo “<div class=’date_created’>Date Created: “ . date( ‘l, F d, Y’, $values['created_time'] ) . “</div>”;
        echo $values['embed_html'];
        echo “<div class=’video_desc’>” . $values['description'] . “</div>”;
    echo “</div>”;
}
?>
   
  </body>
</html>

You can also retrieve other videos information if you want, please see the videos table of Facebook.

Home Android

How To Get A Job In Tech

How To Get A Job In Tech? Well, I currently have a job in the IT industry but not in these big and amazing  companies such as Google, Apple and Facebook. Honestly, I've been dreaming of getting a job at Google. Haha! I choose Google because I love their products such as GMail, Google Docs, Android, Search Engine and many others even though there are some ads, for me it's just fine and natural. It enable me to enjoy great technologies free. :)

But anyway, I'm happy with my current job, developing Google Android applications and utilizing lots of their web development tools such as of Google Code, Analytics, and Webmaster tools.

I wondered how to get at job in these awesome companies. So I thank this info-graphic for giving me some idea. Haha! Let's see:

Home Facebook

Google+ vs. Facebook: Mark Zuckerberg’s Reaction

Alright, so I watched this video for about 10 times now and I know I'm gonna be watching this one tomorrow and in the future. Hahaha! This one really makes me laugh. Well I know some of you might not find it funny but this one is really hilarious for me! I mean, I was like ROFL! This is about MySpace, Facebook and Google+. We all know the competition they had or they're having. The actors are really good.

Real Tom, Fake Tom :))

Fake Zuck, Real Zuck. Well yeah, Fake Zuck looks Gay here. :))

The movie clip were made by the Rooster Teeth. Thanks to them for making my day. :))

Here are some of my favorite lines on that video:

------

Zuck: Listen, we're friends right?
Guy: Sure yeah, we're on the same, circle of friends.

------

Zuck: Do I know you from somewhere?
Tom: Let me give you a hint.

------

Tom: I'm sorry I didn't get your name
Zuck: It's not important, listen, I have to go.

------

Tom: I'm not gonna hurt you, you know why Zuckerberg? I don't have to.

------

There's a lot more. Well, to understand those lines more, just watch it:


The real Tom Anderson had his personal comment on this video:

"G+ / FB / MySpace Parody :-) Takes awhile to get goin' :) Sorta a video version of the comic I shared a few days ago. Update: Some people reacted to this post by suggesting I'm eager to see Zuckerberg / Facebook go down. You're not reading my posts at all if you think that. As I've started a few times, Mark has always been a gentleman to me, and I admire what he's done, and am looking forward to what he will do. The competition between G+, Twitter and Facebook will make all three companies better. Who wins? Us, the users. Did Facebook even have a "status update" before Twitter? FB grew and became better because of that competition. And as for me, my ownership of MySpace was sold in the initial 2005 sale not in the recent fire sale (see previous post). From my perspective, I'm grateful and feel lucky both for the money I made and the long run MySpace did have (I left in early 2009)."

He said that on his Google+ account. Yes, he posted it in his personal G+ account. I admire Tom for being really cool, he has such a great sense of humor. He's a good sport. Tom, "Invented Friends" should be one of your bragging rights in your Google Plus account!

:))))

Home Facebook

Social Network Integration

Social Network Integration
Familiar huh?

Facebook? Twitter? You are probably very familiar or even addicted to them. To date, it is almost impossible for people who use the internet to miss an account with them. They are free, easy to use and lets you connect with your friends or people no matter where on earth they are. Wikipedia defines social networking service as “…an online service, platform, or site that focuses on building and reflecting of social networks or social relations among people, e.g., who share interests and/or activities”. There are so many social networking service sites out there and two of the most popular includes facebook and twitter.

Most internet users are visiting their facebook account everyday. It just shows that the world has gone social. When you log in to your facebook account, you can check and see how many of your friends are online. Large number of people are getting online every day and make it as essential part of their life. They connect with each other, playing games, sharing activities, interests, etc. with their network of friends. They join conversations and discover contents that can be of meaningful value for them. The social network is active and authentic since it is made up of real people - and these people can be the consumers for your business.

With that said, we can conclude that it is beneficial for businesses to integrate social networks, such as facebook and twitter, to their web presence or websites. Once a user like, recommend or tweet your website, it will be shared to their network of friends and this personal recommendation is a powerful kind of endorsement. Your website will have more opportunity to be visited that offers your products and/or services to be known to customers.

Maybe you are aware of how many people can find your facebook page or tweets? According to Wikipedia, facebook now has over 600 million active users all over the world while twitter has 200 million (as of January 2011). It’s now a privilege for your business to join these social networking sites to keep in touch of your customers and get the edge by integrating it to your website.


I have the following tutorials related to Social Network Integration: