Twitter oAuth-pocalypse :)

Seperti yang kita tau, sejak 31 Agustus 2010, Twitter sudah menutup akses basic authenticationnya dan mengharuskan developer mengembangkan aplikasinya dengan oAuth untuk berhubungan dengan Twitter.
Basic auth adalah pemanggilan API yang disediakan Twitter dengan mencantumkan user credential bersamaan dengan pemanggilan API. Jadi, user credential dimasukkan pengguna pada aplikasi pihak ketiga dan akan diteruskan ke Twitter ketika pemanggilan API berlangsung. Hal ini dinyatakan tidak aman karena bisa saja aplikasi pihak ketiga ini menyalahgunakan user credential yang dimasukkan pengguna.
oAuth untuk Twitter adalah autentikasi yang dilakukan Twitter oleh Twitter. Secara sederhana, user credential diinput pengguna langsung ke pihak Twitter. Jadi lebih aman pokoknya. Kalau mau baca lebih lanjut, bisa ke sini tentang oAuth secara, dan ke sini tentang oAuth Twitter. Ya, gak hanya Twitter kok yang pake oAuth gini. Pas lagi baca2 artikel sih udah kecatat lebih dari 46 aplikasi yang menerapkan oAuth.

Nah, sekarang saya mau share tentang pengalaman saya pakai oAuth untuk Twitter. Saya dipinjami aplikasi oleh teman saya. Di aplikasi tersebut sudah ada fungsionalitas post ke Twitter. Jadi, ada info apa di aplikasi itu, bisa dipost ke Twitter. Semua berjalan indah sampai tanggal 31 Agustus 2010. Tiba-tiba saja, aplikasi yang indah itu jadi tidak bisa post ke Twitter lagi karena waktu dikembangkan awalnya masih pakai basic auth. Terdorong keinginan lulus, maka saya coba mengganti ke oAuth. Berikut adalah kronologi nya.

prekondisi : aplikasi dikembangkan di lingkungan .NET. belakang layar pake ASP, di depan, pake silverlight (yang bikin temen saya yang minjemin aplikasi ini, bukan saya)

Saya awalnya nemu satu cara seperti yang dijelaskan di sini.

Pertama, daftarin dulu apps yang mau dibuat ke http://dev.twitter.com/apps.

Perlu diperhatikan, settingnya yang penting adalah read & write supaya bisa update status juga. Saya cukup lama berkutat di error 406 karena masalah sepele ini🙂

Dicatat juga ‘consumer key’ dan ‘consumer secret’ nya. Pilih yang Desktop Client, dan juga Callback URL dikosongkan ya!

Setelah itu, unduh berkas-berkas dari sini dan ekstrak. Nanti ada tiga kelas isinya. Masukkan ke proyek Anda.

Pada kelas program utama Anda, masukkan pemanggilan kode oAuth seperti ini (disadur dari sini)
oAuthTwitter oauth = new oAuthTwitter();
//isi kan consumer key dan secret sesuai yang Anda catat
oauth.ConsumerKey = "keykeykey";
oauth.ConsumerSecret = "secretsecret";
//Memanggil layanan Twitter dengan membuka browser secara otomatis.
System.Diagnostics.Process.Start(oauth.AuthorizationLinkGet());
//Akan diberikan angka-angka PIN
//Silakan tampung di String PIN
//Pin itu akan digunakan untuk meminta token dari Twitter untuk sesi aplikasi Anda
oauth.AccessTokenGet(oauth.OAuthToken, PIN); //ganti PIN dengan string angka tadi

Nah, perlu saya jelaskan sedikit, proses autentikasi yang dilakukan adalah aplikasi yang kita buat akan memanggil Twitter untuk melakukan autentikasi untuk kita. Nanti pengguna akan diminta memasukkan user credential pada browser yang otomatis terbuka. Setelah itu, akan ada pilihan untuk mengijinkan penggunaan oleh aplikasi pihak ketiga (tombol ‘Allow’ atau ‘Deny’). Setelah pengguna mengijinkan akses dengan memilih ‘Allow’, maka Twitter akan meredirect ke halaman callback URL (kalau diisi), namun karena kita mengosongkan (dan memang perlu dikosongkan, awalnya saya mengisi redirect ke URL tertentu, dan saya tidak mendapat PIN yang diharapkan) kita akan diberikan PIN. PIN ini kita catat dan akan kita pertukarkan dengan token dari Twitter pertanda bahwa pengguna telah mengijinkan akses ke Twitter nya. Pertukaran dilakukan pada langkah :

oauth.AccessTokenGet(oauth.OAuthToken, PIN)

Berikutnya, tinggal update status Anda🙂

TwitterAPI.Tweets T = new TwitterAPI.Tweets(OA);
T.UpdateStatus(TwitterAPI.Tweets.ResponseFormat.json, "twit yang hendak Anda post");

Nantinya pada status yang dipost menggunakan aplikasi Anda akan muncul pengenalnya seperti ini

Mungkin terlihat sederhana, tapi membingungkan karena tidak ada gambaran fisiknya. Untuk Anda yang penasaran ingin mencoba, ini saya sertakan program sederhana yang saya buat. Silakan ganti saja consumer key dan secretnya.
Silakan unduh di skydrive saya atau 2shared

Contoh yang saya buat di atas memang terbatas untuk update status Twitter saja, tapi pada kelas tweet.cs ada beberapa method yang bisa digunakan. Detil masing-masing method, parameter2nya, dapat dibaca di sini silakan saja browse untuk method2 lainnya.

Penjelasan lengkap mengenai oAuth Twitter dapat dilihat di sini

Cukup mudah tapi agak ribet memang. Tapi karena saya hanya ingin lulus, yang penting jalan deh ya🙂

Nah, terakhir, ketika saya telah merampungkan pekerjaan di atas, saya iseng baca-baca lagi dan menemukan langkah yang jauh lebih mudah untuk sekedar mempost twitter (update status) saja. Yakni menggunakan library yang sangat baik, Twitterizer.

Sebenarnya yang dilakukan Twitterizer lebih lengkap daripada contoh saya sebelumnya. Lebih powerful. Tapi hematnya di Twitterizer, dia mendukung penggunaan yang sangat sederhana tanpa perlu pakai PIN segala. Tinggal masukkan consumer key dan secret, ditambah 2 parameter lagi yakni Access Token dan Token Secret (keduanya bisa diambil dari sub menu My Application Token pada halaman aplikasi Twitter Anda).

Pemanggilan update status ini hanya berlaku untuk single user, dan automated update. Berbeda dengan cara sebelumnya yang mendukung multiuser (tergantung siapa yang mengautentikasi pada Twitter). Kalau yang ini sudah dipastikan akunnya.

Cara pemanggilannya hanya demikian saja.

OAuthTokens tokens = new OAuthTokens()
{
AccessToken = "AKU",
AccessTokenSecret = "LAPAR",
ConsumerKey = "DAN",
ConsumerSecret = "HAUS"
};
TwitterStatus status = TwitterStatus.Update(tokens, "String yang akan dipost");

dan otomatis, status Twitter Anda akan terupdate. Silakan mencoba!

2 thoughts on “Twitter oAuth-pocalypse :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s