Cara Buat Fitur Login Dengan Facebook SDK Di CodeIgniter - Part 2

Setelah kita selesai membuat aplikasi pada Facebook Developer, maka langkah selanjutnya kita akan mengintegrasikan pada website. Dalam hal ini saya menggunakan framework PHP CodeIgniter untuk membangun website saya, mengingat CodeIgniter adalah Framework paling populer di Indonesia. Jadi pastikan kamu sudah menginstal CI dan melakukan konfigurasi yang dibutuhkan. Jika semua sudah siap, silahkan ikuti langkah-langkah berikut.

Langkah pertama, download Facebook SDK di https://developers.facebook.com/docs/php/gettingstarted/4.0.0.

Ekstrak dan simpan foldernya di dalam framework CodeIgniter.

Langkah kedua buat Controller dengan nama fblogin, berikut adalah baris programnya.

fblogin.php (Controller)

// require file
require_once('Facebook/FacebookSession.php');
require_once('Facebook/FacebookRequest.php');
require_once('Facebook/FacebookResponse.php');
require_once('Facebook/FacebookSDKException.php');
require_once('Facebook/FacebookRequestException.php');
require_once('Facebook/FacebookRedirectLoginHelper.php');
require_once('Facebook/FacebookAuthorizationException.php');
require_once('Facebook/GraphObject.php');
require_once('Facebook/GraphUser.php');
require_once('Facebook/GraphSessionInfo.php');
require_once('Facebook/Entities/AccessToken.php');
require_once('Facebook/HttpClients/FacebookCurl.php');
require_once('Facebook/HttpClients/FacebookHttpable.php');
require_once('Facebook/HttpClients/FacebookCurlHttpClient.php');

// load library class
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookCurl;

class Fblogin extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
    
    public function index()
    {
        // cek jika login
        if($this->session->userdata('loggedin') == FALSE) 
        {
            redirect('fblogin/login');
        }
        
        $this->load->view('fblogin/dashboard', $this->data);
    }
    
    public function login()
    {
        // 1. masukan app id, secret and redirect url
        ////////////////////////////////////////////////////////////////////
        // pada langkah ke 1, kamu akan diminta untuk memasukan App ID, App
        // Secret dan Redirect URL. App ID dan App Secret bisa kamu dapatkan
        // di halaman DASHBOARD di https://developer.facebook.com. Redirect
        // URL adalah url halaman tempat login facebook kamu.
        ////////////////////////////////////////////////////////////////////
        $app_id = '1638712876351816';
        $app_secret = '46139961025c0f4966a5b38631540e8e';
        $redirect_url='http://localhost/sample-codeigniter/fblogin/login';
        
        // 2. inisialisasi, buat helper object and dapatkan session
        FacebookSession::setDefaultApplication($app_id, $app_secret);
        $helper = new FacebookRedirectLoginHelper($redirect_url);
        $sess = $helper->getSessionFromRedirect();
        
        // 3. cek validasi akun pengguna
        if($this->session->userdata('fb_token'))
        {
            $sess = new FacebookSession($this->session->userdata('fb_token'));
            
            try
            {
            	$sess->Validate($id, $secret);
            }
            catch(FacebookAuthorizationException $e)
            {
            	print_r($e);
            }
        }
        
        $this->data['loggedin'] = FALSE;
        // login url
        $this->data['login_url'] = $helper->getLoginUrl(array('email'));
        
        // 4. jika fb session ada maka buat session pengguna
        if(isset($sess))
        {
        	$this->session->set_userdata('fb_token', $sess->getToken());
        	$request = new FacebookRequest($sess, 'GET', '/me');
        	$response = $request->execute();
        	$graph = $response->getGraphObject(GraphUser::classname());
            $sess_data = array(
                'id' => $graph->getId(),
            	'name' => $graph->getName(),
            	'email' => $graph->getProperty('email'),
            	'image' => 'https://graph.facebook.com/'.$graph->getId().'/picture?width=50',
            	'loggedin' => TRUE
            );
            $this->session->set_userdata($sess_data);
            
            redirect('fblogin');
        }
        
        $this->load->view('fblogin/login', $this->data);
    }
    
    public function logout()
    {
        // logout
        $sess_data = array(
            'id' => NULL,
        	'name' => NULL,
        	'email' => NULL,
        	'image' => NULL,
        	'loggedin' => FALSE
        );
        $this->session->unset_userdata($sess_data);
        
        delete_cookie('ci_session');
        
        redirect('fblogin/login');
    }
}

Langkah ketiga buat View, berikut baris programnya.

fblogin/login.php (View)

Halaman login adalah tempat kamu meletakan tombol/button Login with Facebook.

<a href="<?php echo $login_url; ?>">

    <button class="btn btn-primary"><i class="fa fa-facebook-square"></i> Facebook</button>

</a>

fblogin/dashboard.php (View)

Halaman dashboard adalah halaman yang akan terbuka jika kamu berhasil login dengan akun Facebook kamu.

<p>
    
    <img src="<?php echo $this->session->userdata('image'); ?>"/> Hai, <?php echo $this->session->userdata('name'); ?> | <a href="<?php echo site_url('fblogin/logout'); ?>">Logout</a>

</p>

Nah, kalau kamu berhasil maka hasilnya adalah seperti ini.

Selamat mencoba!!

4 Juni 2015

Webinar Gratis 2024


Selanjutnya Pada Bulan Maret 2024

Sabtu, 09 Maret 2024


10 Bahasa Rekomendasi Untuk Dipelajari di 2024

Python Developer, Data Science, Web Application

Kursus Python Django Web Application 2024 di DUMET School Mini Bootcamp Backend Laravel 11 Bulan Mei 2024 di DUMET School
Webinar Selanjutnya Mei 2024

Minggu, 26 Mei 2024, 09.00-13.00 WIB

(4 Jam Membuat Backend di Laravel 11)

chat