Cara Membuat Koneksi Ke Twitter Menggunakan OAuth dan PHP

written by Arief Bayu Purwanto on October 20, 2010 in Tutorial with 15 comments

callback.php

<?php
/* Start session and load lib */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');

/* If the oauth_token is old redirect to the connect page. */
if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {
  $_SESSION['oauth_status'] = 'oldtoken';
  session_destroy();
  header('Location: ./index.php');
}

/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

/* Request access tokens from twitter */
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

/* Save the access tokens. Normally these would be saved in a database for future use. */
$_SESSION['access_token'] = $access_token;

/* Remove no longer needed request tokens */
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);

/* If HTTP response is 200 continue otherwise send to connect page to retry */
if (200 == $connection->http_code) {
  /* The user has been verified and the access tokens can be saved for future use */
  $_SESSION['status'] = 'verified';
  header('Location: ./index.php');
} else {
  /* Save HTTP status for error dialog on connnect page.*/
  session_destroy();
  header('Location: ./index.php');
}

Sama juga seperti diatas tadi, inisiasi session dan load script yang dibutuhkan.
Tapi, kali ini ketambahan dengan pengecekan, apakah oauth_token saat ini, sama dengan oauth_token yang ada di sesi. Hal ini untuk mencegah user melakukan refresh. Karena, bila ini dilakukan, oauth_token yang ada akan rusak dan tidak bisa dipakai lagi. Jadi, user perlu melakukan otentikasi lagi.

/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

Selanjutnya kita perlu membuat koneksi ke twitter dengan menggunakan informasi consumer key dan consumer secret dari aplikasi kita ditambah dengan oauth token dan oauth token secret yang sudah dibuat di halaman redirect.

/* Request access tokens from twitter */
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

Lalu, kita buat access token berdasarkan oauth verifier yang dikirimkan twitter ke halaman callback.

/* Save the access tokens. Normally these would be saved in a database for future use. */
$_SESSION['access_token'] = $access_token;

/* Remove no longer needed request tokens */
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);

Informasi access_token inilah sebenarnya yang kita butuhkan agar kita bisa menggunakan API twitter dengan hak akses dari user. Sehingga, informasi ini perlu di simpan ke database. Untuk kasus kali ini, cukup disimpan di session saja.

/* If HTTP response is 200 continue otherwise send to connect page to retry */
if (200 == $connection->http_code) {
  /* The user has been verified and the access tokens can be saved for future use */
  $_SESSION['status'] = 'verified';
  header('Location: ./index.php');
} else {
  /* Save HTTP status for error dialog on connnect page.*/
  session_destroy();
  header('Location: ./index.php');
}

Sisanya, sama saja dengan proses di redirect.php, bika return status dari $connection gagal, berarti ada kesalahan, perlu menghapus sesi agar proses otentikasi bisa diulang. Bila statusnya sukses, tinggal redirect kembali ke index.php lalu lakukan yang ingin dilakukan dengan twitter.

Nah, karena prosesnya sudah selesai, sekarang kita kembali lagi ke index.php untuk menjelaskan apa yang sebenarnya dilakukan script itu saat selesai otentikasi dengan OAuth.

	//wah, sudah berhasil tersambung nih. Lakukan proses disini
	$access_token = $_SESSION['access_token'];
	$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
	$content = $connection->get('account/verify_credentials');
	var_dump($content);

Disini, kita perlu mengambil terlebih dahulu access_token dari user, yang sudah kita buat saat di callback.php. Kemudian, kita membuat koneksi ke twitter dengan informasi access_token dan oauth token & oauth token secret. Setelah koneksi selebihnya tinggal melakukan API request yang diinginkan. Contohnya, kita melakukan verifikasi credentials, dengan perintah:

$content = $connection->get('account/verify_credentials');

Penutup

Membuat koneksi OAuth ke twitter dengan menggunakan PHP memang gampang-gampang susah. Kalau ternyata dengan tutorial ini masih juga bingung, silahkan ditanyakan saja di kolom komentar. Siapa tahu, dari pertanyaan itu bisa jadi tutorial baru lagi. Lumayan kan, pertanyaan anda terjawab, blog saja juga update:D. Lalu, kalau butuh daftar API yang bisa dilakukan, silahkan konsultasikan ke halaman dev twitter.