Like us on Facebook and stand a chance to win pen drives!

Codeigniter Facebook Login Tutorial using Facebook PHP SDK

Codeigniter Facebook Login Tutorial using Facebook PHP SDK
Codeigniter Facebook Login Tutorial using Facebook PHP SDK

Welcome to my new Codeigniter tutorial for Facebook Login. I assume that you are familar with Codeigniter framework before starting the tutorial. However, you can adopt the source code to use in native PHP application if you are not interested in CI. There is another alternative. Previously, I have published two posts related with Facebook Login. You can also refer those tutorials.

Facebook OAUTH dialog with new Graph API
AJAX Facebook Connect Demo

First you need to create a Facebook application.
Visit this link to  create new app.
This is a straight-forward process.

New App





You need to get the App ID and App Secret of your application.

First create a config file to store App ID and App Secret.

config_facebook.php


$config['appID']    = 'YOUR_APP_ID';
$config['appSecret']    = 'YOUR_APP_SECRET';

Add a controller that handles Facebook login and logout.
fb.php


<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
 
//include the facebook.php from libraries directory
require_once APPPATH . 'libraries/facebook/facebook.php';
 
class Fb extends CI_Controller {
 
public function __construct() {
parent::__construct();
$this->config->load('config_facebook');
}
 
public function index() {
$this->load->view('head');
$this->load->view('fb');
$this->load->view('footer');
}
 
public function logout() {
$signed_request_cookie = 'fbsr_' . $this->config->item('appID');
setcookie($signed_request_cookie, '', time() - 3600, "/");
$this->session->sess_destroy();  //session destroy
redirect('/fb/index', 'refresh');  //redirect to the home page
}
 
public function fblogin() {
 
$facebook = new Facebook(array(
'appId' => $this->config->item('appID'),
'secret' => $this->config->item('appSecret'),
));
// We may or may not have this data based on whether the user is logged in.
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
$user = $facebook->getUser(); // Get the facebook user id
$profile = NULL;
$logout = NULL;
 
if ($user) {
try {
$profile = $facebook->api('/me');  //Get the facebook user profile data
$access_token = $facebook->getAccessToken();
$params = array('next' => base_url('fb/logout/'), 'access_token' => $access_token);
$logout = $facebook->getLogoutUrl($params);
 
} catch (FacebookApiException $e) {
error_log($e);
$user = NULL;
}
 
$data['user_id'] = $user;
$data['name'] = $profile['name'];
$data['logout'] = $logout;
$this->session->set_userdata($data);
redirect('/fb/test');
}
}
 
public function test() {
$this->load->view('test');
}
 
}
 
/* End of file fb.php */
/* Location: ./application/controllers/fb.php */

In this tutorial, I'm using Facebook JavaScript SDK to load the oauth dialog. You need to add the App ID in following code to initiate the SDK successfully.






9 comments:

  1. i'm getting this error. can you please help?

    Fatal error: Call to undefined function base_url() in C:\wamp\www\CodeIgniter2\application\views\welcome_message.php on line 1 Call Stack #TimeMemoryFunctionLocation 10.0006260672{main}( )..\index.php:0 20.0032318824require_once( 'C:\wamp\www\CodeIgniter2\system\core\CodeIgniter.php' )..\index.php:202 30.03161262312call_user_func_array ( )..\CodeIgniter.php:359 40.03161262392Welcome->index( )..\CodeIgniter.php:359 50.03161262568CI_Loader->view( )..\welcome.php:22 60.03161263320CI_Loader->_ci_load( )..\Loader.php:419 70.03211289992include( 'C:\wamp\www\CodeIgniter2\application\views\welcome_message.php' )..\Loader.php:833

    ReplyDelete
  2. Hi, Please check you have loaded 'url' library. You may autoload this library.

    ReplyDelete
  3. Info Molto utile. Spero di vedere presto altri post!

    ReplyDelete
  4. mmm i have a problem the image doesnt appear

    ReplyDelete
  5. Thanks for your post , but how do i retrieve the Logged in user data from backend function ..

    ReplyDelete
  6. Thanks Sanny.
    I think you need to retrieve information from the database of the loggedin user. If this is the case first find redirect('/fb/test'); line in Fb controller. Here we redirect the verified user to Test controller. Before redirecting you can fetch user information from the database using $user_id which we already have. You can create sessions to store necessary data. This code may include in a User model. After everything is ok, you can redirect him as mentioned earlier.

    ReplyDelete
  7. logout is not happening? what to do?

    ReplyDelete
  8. when i click on logout buttong, it redirect to facebook home page

    ReplyDelete

Copyright © 2012 The Code Junction.