Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Belajar PHP: Membuat Fitur Login dengan Twitter OAuth

Posted on June 22, 2012

Pendahuluan

Awalnya twitter membuka akses otentifikasinya ke situs pihak ketiga, namun semuanya berubah secara resmi sejak Agustus 2010 ketika pengguna twitter sudah semakin banyak dan sistem otentifikasi ke pihak ketiga berpotensi merugikan Twitter. Untuk itulah, mulai saat itu Twitter membuka sistem otentifikasi baru berbasis OAuth API. Hal yang sama juga terjadi di Facebook.

Pada tutorial kali ini kita akan mencoba menambahkan fitur login dengan username dan password Twitter ke aplikasi kita.

Setting Aplikasi

Untuk mencoba tutorial kali ini setidaknya anda sudah menyiapkan hal-hal berikut:
1. Mendaftarkan aplikasi anda ke Twitter Developer di http://dev.twitter.com/apps/new
2. Pastikan saat mendaftarkan aplikasi, anda tidak mengisikan alamat http://localhost/, gunakan callback URL seperti http://localhost/twitter_login.php.
3. Pilih opsi Read & Write, isi captcha dan klik tombol Register Application dan centang tanda Accept Terms of Service.

Jika sukses anda akan memperoleh Consumer key dan Consumer secret. Dua value itu yang akan kita pergunakan.

Selain mendaftarkan aplikasi, silakan manfaatkan pustaka PHP untuk Twitter OAuth seperti http://github.com/abraham/twitteroauth, atau temukan class PHP yang anda anggap cocok.

Buat tabel otentifikasi pada database:
[sourcecode language=”sql”]
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`oauth_provider` varchar(10),
`oauth_uid` text,
`oauth_token` text,
`oauth_secret` text,
`username` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
[/sourcecode]

Diantara yang akan kita catat pada tabel ini yang terpenting adalah oauth_token dan oauth_secret.

Membuat Fitur Login dengan OAuth

Prinsip kerja fitur login dengan OAuth Twitter ini antara lain:
– meminta otorisasi user twitter untuk login,
– daftarkan user jika user baru, atau jika sudah terdaftar lanjutkan proses login
– set data session yang diperlukan

Konsepnya seperti ini:
1. muat pustaka Twitter OAuth kita:
[sourcecode language=”php”]
require("twitteroauth/twitteroauth.php");
session_start();
[/sourcecode]

2. buat instance OAuth untuk aplikasi kita, simpan sebagai twitter_login.php misalnya.
[sourcecode language=”php”]
//isikan consumer key dan consumer secret disini
define(‘CONSUMER_KEY’, ”);
define(‘CONSUMER_SECRET’, ”);

// TwitterOAuth instance
$twitteroauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
// kita request token otentifikasi, parameter URL harus disesuaikan dengan yang kita daftarkan dan akan diredirect jika sukses
$request_token = $twitteroauth->getRequestToken(‘http://localhost.com/twitter_oauth.php’);

// simpan token ke dalam session
$_SESSION[‘oauth_token’] = $request_token[‘oauth_token’];
$_SESSION[‘oauth_token_secret’] = $request_token[‘oauth_token_secret’];

// jika sukses lakukan yang anda inginkan
if($twitteroauth->http_code==200){
// Let’s generate the URL and redirect
$url = $twitteroauth->getAuthorizeURL($request_token[‘oauth_token’]);
header(‘Location: ‘. $url);
} else {
// pesan error
die(‘Something wrong happened.’);
}
[/sourcecode]

Coba kunjungi aplikasi anda, jika benar anda akan diredirect ke halaman oauth milik twitter. Klik tombol Allow untuk mengijinkan username anda digunakan atau dicatat ke aplikasi pihak ketika milik anda.

Sekarang kita bangun script twitter_oauth.php, periksa dulu apakah session yang memuat oauth token sudah ada. Jika belum, redirect ke halaman login.
[sourcecode language=”php”]
if(!empty($_GET[‘oauth_verifier’]) && !empty($_SESSION[‘oauth_token’]) && !empty($_SESSION[‘oauth_token_secret’])){
// lanjutkan
} else {
// ada yang salah, redirect ke halaman login
header(‘Location: twitter_login.php’);
}
[/sourcecode]

Kemudian bangun instance OAuth:
[sourcecode language=”php”]
// TwitterOAuth instance
$twitteroauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION[‘oauth_token’], $_SESSION[‘oauth_token_secret’]);
// tangkap token
$access_token = $twitteroauth->getAccessToken($_GET[‘oauth_verifier’]);
// simpan dalam session
$_SESSION[‘access_token’] = $access_token;
// dapatkan informasi user yang login dengan oauth twitter
$user_info = $twitteroauth->get(‘account/verify_credentials’);
// lihat jika perlu
print_r($user_info);
[/sourcecode]

Sebagai tambahan, kita akan bangun logika jika pengguna telah ada atau belum ada dalam daftar login kita. Simpan contoh script sebagai twitter_update.php
[sourcecode language=”php”]
if(isset($user_info->error)){
// Something’s wrong, go back to square 1
header(‘Location: twitter_login.php’);
} else {
// Let’s find the user by its ID
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = ‘twitter’ AND oauth_uid = ". $user_info->id);
$result = mysql_fetch_array($query);

// If not, let’s add it to the database
if(empty($result)){
$query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES (‘twitter’, {$user_info->id}, ‘{$user_info->screen_name}’, ‘{$access_token[‘oauth_token’]}’, ‘{$access_token[‘oauth_token_secret’]}’)");
$query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
} else {
// Update the tokens
$query = mysql_query("UPDATE users SET oauth_token = ‘{$access_token[‘oauth_token’]}’, oauth_secret = ‘{$access_token[‘oauth_token_secret’]}’ WHERE oauth_provider = ‘twitter’ AND oauth_uid = {$user_info->id}");
}

$_SESSION[‘id’] = $result[‘id’];
$_SESSION[‘username’] = $result[‘username’];
$_SESSION[‘oauth_uid’] = $result[‘oauth_uid’];
$_SESSION[‘oauth_provider’] = $result[‘oauth_provider’];
$_SESSION[‘oauth_token’] = $result[‘oauth_token’];
$_SESSION[‘oauth_secret’] = $result[‘oauth_secret’];

header(‘Location: twitter_update.php’);
}
[/sourcecode]

Sehingga jika belum ada session username yang tercatat, redirect user ke halaman update diatas:
[sourcecode language=”php”]
if(!empty($_SESSION[‘username’])){
// User is logged in, redirect
header(‘Location: twitter_update.php’);
}
[/sourcecode]

Dan jika anda ingin menyapa pengguna yang masuk, gunakan contoh berikut:
[sourcecode language=”php”]
<h2>Hello <?=(!empty($_SESSION[‘username’]) ? ‘@’ . $_SESSION[‘username’] : ‘Guest’); ?></h2>
[/sourcecode]

Referensi:
NetTuts

Terbaru

  • Belum Tahu? Ini Trik Checkout Tokopedia Bayar Pakai Dana Cicil Tanpa Ribet!
  • Benarkah Pinjol Akulaku Sebar Data Jika Gagal Bayar?
  • Paket Nyangkut di CRN Gateway J&T? Tidak Tahu Lokasinya? Ini Cara Mencarinya!
  • Apa itu Nomor 14055? Nomor Call Center Apa? Ini Penjelasan Lengkapnya
  • Apakah APK Lumbung Dana Penipu & Punya Debt Collector?
  • Ini Ukuran F4 dalam Aplikasi Canva
  • Cara Lapor SPT Tahunan Badan Perdagangan di Coretax 2026
  • Cara Dapetin Saldo DANA Sambil Tidur Lewat Volcano Crash, Terbukti Membayar!
  • Apakah Aplikasi Pinjaman TrustIQ Penipu/Resmi OJK?
  • Cara Menggabungkan Bukti Potong Suami-Istri di Coretax 2026
  • Inilah Cara Cepat Upload Foto Peserta TKA Sekaligus Biar Nggak Perlu Klik Satu Per Satu
  • Apa itu Aplikasi MOVA, Penipuan atau Skema Ponzi Berkedok Aplikasi Belanja?
  • Inilah Cara Menarik Saldo ReelFlick ke DANA
  • Inilah Cara Ternak Akun Mining Bitcoin Pakai Virtual Master Biar Nggak Berat dan Tetap Lancar
  • Cara Mencairkan Koin Melolo Tanpa Invite Kode
  • Cara Mencairkan Saldo Game Sumatra The Island ke e-Wallet
  • Apakah Aplikasi Pinjol AksesDana Penipu/Resmi OJK?
  • Apakah Aplikasi RupiahMaju Pinjol Penipu/Legal?
  • Apakah Aplikasi MBA Itu Ponzi/Penipuan Atau Tidak?
  • Cara Menghilangkan Iklan dari Aplikasi Melolo
  • Cara Atasi Saldo Melolo yang Gagal Cair ke Dompet Digital
  • Cara Mengatasi Kode Undangan/Invite Code Melolo Tidak Berhasil
  • Apakah Aplikasi FreeReels Penipuan?
  • Gini Caranya Nonton Drama Pendek FreeReels dan Dibayar
  • Inilah Panduan Lengkap Persiapan TKA Madrasah 2026 Biar Nggak Ketinggalan!
  • Ini Trik Supaya Gelembung Game Clear Blast Cepat Pecah dan Bisa Withdraw!
  • Cara Main Game Gold Combo, Sampai Cuan ke e-Wallet
  • Update YouTube 2026:Sekilas Tentang Inauthentic Content yang Makin Ketat
  • Inilah Cara Lapor SPT Tahunan di Coretax 2026 Biar Nggak Bingung!
  • Gak Perlu Root! Ini Cara Buka Folder Android/Data Tanpa ZArchiver di HP Android Modern
  • How to Secure Your Moltbot (ClawdBot): Security Hardening Fixes for Beginners
  • Workflows++: Open-source Tool to Automate Coding
  • MiroThinker-v1.5-30B Model Explained: Smart AI That Actually Thinks Before It Speaks
  • PentestAgent: Open-source AI Agent Framework for Blackbox Security Testing & Pentest
  • TastyIgniter: Open-source Online Restaurant System
  • Cara Membuat Pipeline RAG dengan Framework AutoRAG
  • Contoh Sourcecode OpenAI GPT-3.5 sampai GPT-5
  • Cara Mengubah Model Machine Learning Jadi API dengan FastAPI dan Docker
  • Cara Ubah Tumpukan Invoice Jadi Data JSON dengan LlamaExtract
  • Cara Buat Audio Super Realistis dengan Qwen3-TTS-Flash
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

©2026 emka.web.id | Design: Newspaperly WordPress Theme