Facebook Graph API authentication OAuth 2.0 replacing Require Login

Tags: | |

Facebook has recently introduced Graph API and simplified many things. The new Graph API attempts to drastically simplify the way developers read and write data to Facebook.The Graph API uses OAuth 2.0 for authorization. OAuth 2.0 is a simpler version of OAuth that developers used earlier for authorization as $facebook->require_login(). (by the way, old token still works)

In the previous version, RequireLogin was a one line simple way of getting authorization for user. When I upgraded to OAuth 2.0, I had a hard time getting my user authenticated which looked like very simple thing in pre Graph API days.

Here is how I finally manage to put together for my latest facebook app.

To authenticate user in Graph API, first of all, download the Facebook PHP SDK facebook.php and put it inside includes folder. After that, get the Application Id, API key, application secret and canvas url of your facebook app and put it inside following $fbconfig array.

$fbconfig['appid']  = "Application id here";
  $fbconfig['api']  = "API Key here";
  $fbconfig['secret']  = "App Secret here";
  $fbconfig['canvas_url']  = "http://apps.facebook.com/your_app_name/";
 
 
  try{
  include_once 'includes/facebook.php';
  }
  catch(Exception $o){
 print_r($o);				
	}
 
// Create our Application instance.
$facebook = new Facebook(array(
 'appId'  => $fbconfig['appid'],
 'secret' => $fbconfig['secret'],
 'cookie' => true,
 'domain' => "Your Canvas Callback URL domain here"
  ));
 $session = $facebook->getSession();
 if (!$session) {
echo RequestforPermission();
	}
else {	//got session
	try {
	$me = $facebook->api('/me');
 
	if(!IsApplicationUser($me['id'])) {
	//InsertApplicationUser($me);
            //create a function and insert the user info
             //into App DB for later use
	}
          }
 catch (FacebookApiException $e) {
RequestforPermission($fbconfig['canvas_url'] );
	}
    }

Please add this function “RequestforPermission” as well in this file.

function RequestforPermission($next_url) { 
	global $facebook;
	$loginUrl=$facebook->getLoginUrl(array(
	'canvas'=>1,
	'fbconnect'=>0,
	'display'=>'page',
	'next'=>$next_url,
	'cancel_url'=>'http://www.facebook.com/',
	'req_perms'=>'email,publish_stream',
	));
	return '<fb:redirect url="'.$loginUrl.'" />';
	  } // end redirect function

Put all this code into a file named “fb-authentication.php” and simply include “fb-authentication.php” in those files in your application where you want Facebook user authentication.

Hope that helps.

Cheers.

Related posts:

  1. Facebook Graph API 3.1 – Requesting Extended Permissions for your Application
  2. How to check Facebook Page Liked by User, Like-Gate Facebook iFrame Tab using PHP Graph API
  3. Facebook applications will automatically upgrade to new data permissions on June 30
  4. Facebook Application Development with Graph API Cookbook
  5. What is Facebook Third Party ID and How to Get it using Graph API