Less talk, more code

The blog of Iskandar Soesman

Integrasikan Single Sign On (SSO) Facebook Connect dengan Website Berbasis PHP

UPDATE: Semenjak Facebook meluncurkan Facebook Graph, yang menggunakan Oauth sebgai mekanisme otentifikasinya, Artikel ini sudah tidak relevan lagi. Untuk membaca lebih jauh tentang otentifikasi Facebook menggunakan Oauth 2.0 silahkan baca di link berikut developers.facebook.com/docs/api#authorization

Facebook merupakan website jejaring sosial terbesar saat ini. Berdasarakan data Alexa Facebook menempati peringkat ke dua terbesar di seluruh dunia setelah Google. Untuk di Indonesia sendiri Facebook menjadi website yang paling banyak dikunjungi.

Salah satu penyebab yang menjadikan Facebook begitu digemari oleh setiap orang adalah banyaknya applikasi yang bisa digunakan baik untuk kepentingan serius (seperti applikasi survey atau group) maupun sekedar mencari hiburan dengan bermain game. Banyaknya applikasi ini dimungkinkan karena Facebook membuka platform applikasinya sehingga bisa dipelajari dan digunakan oleh setiap developer applikasi.

Facebook Connect merupakan salah satu bagian dari platform ini dimana developer bisa menggunakannya untuk mengintegrasikan proses login dan mendapatkan data user untuk dimanfaatkan pada website kita. Dengan Facebook Connect user hanya cukup login seperti biasa di halaman login Facebook dan selebihnya Facebook akan mengirimkan data-data apa saja yang diperlukan untuk website kita.

Bagai mana caranya menggunakan Facebook Connect ini? Berikut adalah panduannya.

DOWNLOAD SOURCECODE

Yang pertama kali perlu Anda lakukan adalah membuat applikasi di halaman ini developers.facebook.com. Anda bisa mengikuti wizard yang ada atau bisa juga membaca panduannya di sini developers.facebook.com. Setelah selesai Anda akan mendapatkan API Key dan Application Secret. Kemudian Anda juga mebutuhkan Facebook PHP Client Library yang bisa didownload di sini facebook-platform.tar.gz.

Catatan: penulis melakukan modifikasi pada Library ini yaitu pada file facebook.php baris 238. Hal ini untuk memperbaiki penghapusan cookie pada saat logut.

Gunakanlah API Key dan Application Secret untuk mengisi nilai pada variable $appapikey dan $appsecret pada file config.php. Anda juga harus mengisikan nilai url path pada varible $this_root berikut adalah contohnya:

Berikut ini adalah fungsi untuk melakukan inisialisasi class facebook:

function _fbc_make_client() {
    global $appapikey, $appsecret;
    return new Facebook($appapikey,$appsecret, false, 'connect.facebook.com');
}

Untuk memudahkan dalam mendapatkan object hasil dari class facebook, gunakan fungsi berikut ini:

function fbc_facebook_client() {
  static $facebook = null;
  if ($facebook === null) {
    $facebook = _fbc_make_client();
  }
  return $facebook;
}

Untuk mendapatkan objek api client gunakan fungsi berikut:

function fbc_api_client() {
  return fbc_facebook_client()->api_client;
}

Fungsi berikut ini digunakan untuk melakukan koneksi ke Facebook API tanpa haru menyertakan session user:

function fbc_anon_api_client() {
  $client = _fbc_make_client();
  $client->user = 0;
  $client->api_client->session_key = null;
  return $client->api_client;
}

Berikut ini fungsi untuk mendefenisikan data apa saja yang akan kita minta ke Facebook:

function fbc_userinfo_keys() {
    return array('name',
               'first_name',
               'last_name',
               'proxied_email',
               'profile_url',
                'locale',
                'affiliations',
                'pic_square');
}

Untuk mendapatkan data user gunakan fungsi berikut ini:

function fbc_user() {
    $fbuid = fbc_facebook_client()->get_loggedin_user();
    $userinfo = fbc_anon_api_client()->users_getInfo(array($fbuid),
                                                   fbc_userinfo_keys());
    $userinfo = $userinfo[0];
    return $userinfo;
}

Contoh menggunakan fungsi di atas untuk mendapatkan data user adalah:

Contoh mendapatkan user id adalah:

$user_id = fbc_facebook_client()->get_loggedin_user();

Semua fungsi-fungsi di atas kita satukan pada halaman config.php

Berikutnya adalah membuat halaman index.php. Padahalaman ini kita include-kan file config.php. Setelah itu dilakukan pengecekan apakah user sudah terotentifikasi atau belum. Jika belum tampilkan link login dan jika sudah redirect user ke halaman home.php. Link login akan meredirect user ke halaman login pada website Facebook. Berikut adalah kode sumbernya:

echo 'Click <a href="index.php?login">here</a> to login with your Facebook account.';
echo '';
?>

Berikut ini adalah kode sumber untuk halaman home.php:

logout($this_root);
    echo 'Harap tunggu...';
}

$userinfo = fbc_user();
?>

Welcome <a href="<?php echo $userinfo['profile_url'];?>"></a> <a href="?logout">Logout</a>

<img src="<?php echo $userinfo['pic_square'];?>" alt="" />

Pada contoh ini data user langsung digunakan untuk menampilkan informasi pada browser yang menyatakan ia telah login. Anda bisa memanfaatkan data yang diberikan Facebook dan menyimpannya ke dalam database applikasi Anda. Dengan begikut ketika user kembali login di lain waktu Anda hanya cukup melakukan pengecekan berdasarkan id-nya saja.

Mudah-mudahan panduan sederhana ini bisa bermanfaat buat teman-teman developer sekalian, selamat mencoba.