Saya ceritanya baru berhasil menggunakan Facebook Graph API dan Codeigniter. Ini saya lakukan karena saya sudah cukup menyerah dengan ribetnya RestAPI Client yang diberikan Facebook. Karena kasus saya agak berbeda, yaitu saya punya beberapa aplikasi terpisah dalam satu instalasi Codeigniter. Setelah melihat-lihat, ternyata ada cara lain yang bisa kita lakukan. Dan yang paling mudah dan cukup aman diimplementasikan adalah Facebook Graph API ini.
Catatan ini kiranya bisa berguna buat teman-teman yang lain atau yang mungkin di kemudian hari dapat proyek ini. Juga sebagai catatan saya, biar nanti kalau ada proyek lain saya tinggal melihat dokumentasi yang saya buat.
Yang perlu disiapkan adalah 1 librari dan 1 file controller dan 1 file view. Tidak perlu unduh (download) yang lain. Facebook Graph API ini memang jauh lebih simpel. Dan saya sangat menikmati proses belajar ini. Dan perlu diketahui, bahwa tutorial kali ini tidak akan mencakup banyak hal. Saya hanya mengharapkan anda mengerti konsep baru yang ditawarkan Facebook ini.
Sebelum memulai, pastikan beberapa hal berikut ini:
- Versi PHP yang dipakai adalah versi 5
- Pengetesan skrip tidak bisa dilakukan di server lokal. Jadi anda harus punya hosting dan harus online
- Codeigniter yang saya pakai 1.7.2, saya kurang tahu apa tetap akan sama jika menggunakan versi lama
Langkah pertama, buat aplikasi
Ini adalah langkah wajib. Karena dengan mendaftarkan aplikasi kita, Facebook akan memberikan 3 hal penting yang nantinya kita butuhkan. Yaitu Application ID, Application Secret dan API Key. [Klik link ini untuk mendaftarkan aplikasi anda]. Yang perlu anda isi adalah Application Name dan Connect->Connect URL.
Langkah kedua, unduh librari Curl
Librari Curl yang saya pakai ini memang hebat. Mudah sekali pakainya. Bisa diunduh dari link ini: http://codeigniter.com/wiki/Curl_library/
Langkah ketiga, konfigurasi
Buka file /application/config/config.php, lakukan beberapa hal berikut ini:
- Index page dibuat kosong.
$config['index_page'] = ""; (baris 26)
- URI Protocol dibuat jadi ORIG_PATH_INFO.
$config['uri_protocol'] = "ORIG_PATH_INFO"; (baris 44)
- On-kan pilihan query string.
$config['enable_query_strings'] = TRUE; (baris 151)
Langkah keempat, htaccess
Karena konfigurasi codeigniter saya tidak menggunakan “index.php”, maka saya butuh berkas (file) htaccess. Berikut isinya:
RewriteEngine on
RewriteCond $1 !^(index\.php|assets)
RewriteRule ^(.*)$ /projects/fbci/index.php/$1 [L]
Sesuaikan path ini:/projects/fbci/index.php dengan aplikasi anda.
Langkah kelima, controller
Kita hanya punya 1 berkas controller. Saya menggunakan controller yang diberikan Codeigniter saat kita instalasi, yaitu controller Welcome.
Controller itu nantinya akan punya 2 method, yang pertama sebagai gerbang pertama sebelum pengguna (user) masuk ke Facebook. Dan yang kedua sebagai penerima data dari Facebook. Berikut adalah gambar perjalanan aplikasi kita yang berkomunikasi dengan Facebook (semoga ngerti, saya kurang bisa gambar).

Dari gambar di atas, berikut detail yang bisa saya berikan:
- Ketika pengguna mengeklik sebuah tautan di aplikasi kita (bisa berupa link, tombol, atau apa saja)
- Aplikasi kita mengarahkan pengguna untuk login dulu ke Facebook dan atau menerima konfirmasi tentang informasi apa saja yang akan aplikasi kita butuhkan. Tautan itu seperti ini:
https://graph.facebook.com/oauth/authorize?client_id=[client_app_id]&redirect_uri=[redirect_uri]
- Dari tautan di atas, [client_app_id] diambil dari kode aplikasi ketika kita selesai mendaftarkan aplikasi di Facebook. Sedangkan [redirect_uri] adalah URL yang akan kita gunakan untuk menangkap kode dari Facebook berupa
$_GET['code']. Maka dari itu, aplikasi kita harus menerima query string (lihat bagian konfigurasi di atas).
- Setelah Facebook mengirim kode, kita perlu akses token untuk mendapatkan data-data pengguna Facebook. Untuk mendapatkan akses token, kita perlu menghubungi lagi Facebook dengan mengirim data kode (yang kita dapat di nomor 2), [redirect_uri] dan [secret_code].
- Setelah itu Facebook akan mengirimkan akses token dalam format JSON.
- Setelah punya akses token, kita bisa bebas meminta data-data pengguna ke Facebook.
Langkah keenam
Ini adalah langkah terakhir tutorial kali ini, yaitu mengunduh berkasnya. Saya sadar bahwa tidak ada keterangan yang lengkap sekali untuk level pemula. Tapi percayalah, saya hanya bisa mengarahkan dan sedikit memberitahu cara kerja Graph API ini. Dokumentasi Graph API lebih lengkap dan siap disantap.

Berikut adalah kode untuk Controller:
<?php
class Welcome extends Controller {
// beberapa detail aplikasi kita
// ini semua harus diisi.
var $fb_appid = "";
var $fb_secret = "";
var $fb_api = "";
function Welcome()
{
parent::Controller();
$this->load->helper("url");
}
function index() {
$data['app_id'] = $this->fb_appid;
$this->load->view('welcome_message', $data);
}
function fb() {
$this->load->library("curl");
// method untuk redirect balik dari facebook
// setelah pemanggilan pertama, facebook mengirimkan sebuah kode
// yang bisa kita tangkap lewat $_GET['code']
// cek dulu, apa $_GET['code'] ada
if(isset($_GET['code'])) {
// buat url untuk mengambil token
$url = 'https://graph.facebook.com/oauth/access_token?client_id='.$this->fb_appid.'&redirect_uri='.site_url("/welcome/fb").'&client_secret='.$this->fb_secret.'&code='.$_GET['code'];
// ambil token lewat curl
$token_data = $this->curl->simple_get($url);
// ambil kode token saja, dengan regular expression
// arti tanda ([^&]+) adalah:
// ambil semua karakter asal bukan tanda &
preg_match("/access_token=([^&]+)/",$token_data,$token);
// kode token ada di variabel token[1]
$access_token = $token[1];
// pengambilan token selesai, sekarang ambil userid, nama
$uri = 'https://graph.facebook.com/me?access_token='.$access_token;
$data = $this->curl->simple_get($uri);
// decode data
$fb = json_decode($data);
$fb_id = $fb->id;
// ambil nama dan foto pengguna
$fb_userdata = $this->curl->simple_get("https://graph.facebook.com/".$fb_id."?fields=name,picture&access_token=".$access_token);
//echo "https://graph.facebook.com/".$fb_id."?fields=name,picture&access_token=".$access_token;
$fb_user = json_decode($fb_userdata);
$data = array();
$data['fbuser'] = array('id'=>$fb_id, 'avatar'=> $fb_user->picture, 'nama'=> $fb_user->name);
//print_r($data);
}
elseif(isset($_GET['error_reason'])) {
// untuk menangkap user yang klik "Dont Allow" atau "Cancel di Facebook"
// buat variabel untuk ditampilkan di view
$data['tolak'] = "Uh oh, saya ditolak T_T";
}
$this->load->view("welcome_message",$data);
}
}
?>