Welcome to Abdul Malik Ikhsan's Blog

Zend Framework : Zend_Oauth and Zend_Service_Twitter – Access Your Twitter Application

Posted in Zend Framework by samsonasik on December 12, 2011

Oauth, adalah sebuah protokol terbuka yang memungkinkan pengguna berbagi sumber pribadi yang disimpan di situs web dengan situs lain tanpa perlu menyerahkan username dan kata sandi. Proses ini diberikan dengan memberikan token. Setiap token memberikan akses spesifik terhadap resource spesifik.

Zend Framework mempunyai komponen hebat, bernama Zend_Oauth yang bisa digunakan sebagai consumer untuk me-request token yang dibutuhkan dengan passing konfigurasi callbackUrl, siteUrl, consumerKey, dan consumerSecret.

Yang Bisa dilihat seperti di bawah ini :

    $config = array(
        'callbackUrl' => 'http://example.com/callback.php',
        'siteUrl' => 'http://site.com/oauth',
        'consumerKey' => '420e2a1aa3880887a06f3fe904f09569',
        'consumerSecret' => '8a162e8bc5b9af11e08699ae36ee420e2a1aa3817f'
    );
    $consumer = new Zend_Oauth_Consumer($config);

Yang dibutuhkan dalam Protokol Oauth, adalah Access Token, maka dari itu, Request token yang kita dapatkan dari object $consumer kita gunakan untuk mendapatkan access token. Okey…, kali ini, saya akan coba demo-kan penggunaan Zend_Oauth dan Zend_Service_Twitter yang ber-simbiosis komensalisme untuk mengakses Twitter Data dari aplikasi yang kita buat.
Pertama, kita daftarkan aplikasi kita di twitter di sini. Setelah kita mendaftarkan aplikasi kita, kita akan mendapatkan ConsumerKey, ConsumerSecret, AccessToken, dan Access Token Secret kita sebagai pembuat aplikasi, seperti gambar berikut :

Ingat, Access token yang telah diberikan ini adalah milik kita, si pembuat aplikasi, jika kita ingin agar aplikasi yang kita buat ini bisa dipakai oleh publik, maka kita harus request token access sebagai persetujuan akses aplikasi kita.
Nah, sekarang kita siapkan hal-hal yang dibutuhkan.
1. config.php ~ file konfigurasi

$config = array(
    //callback di website kita yang kita daftarkan pada saat membuat aplikasi di twitter
        'callbackUrl' => 'http://example.com/callback.php',
    //url oauth twitter punya
        'siteUrl' => 'http://twitter.com/oauth',
    //ini hanya consumerKey permisalan
        'consumerKey' => '420e2a1aa3880887a06f3fe904f09569',
    //ini hanya consumerSecret permisalan
        'consumerSecret' => '8a162e8bc5b9af11e08699ae36ee420e2a1aa3817f'
);

2. common.php ~ variable yang dibutuhkan di tiap halaman

    session_start();

    require_once 'Zend/Loader/Autoloader.php';
    $autoloader = Zend_Loader_Autoloader::getInstance();

    include './config.php';
    $consumer = new Zend_Oauth_Consumer($config);

3. callback.php ~ authentication Callback


include_once './common.php';

if (!empty($_GET) && isset($_SESSION['TWITTER_REQUEST_TOKEN'])) {
    if ( empty($_GET['denied']) && !empty($_GET['oauth_token']) && !empty($_GET['oauth_verifier']) ){
        $token = $consumer->getAccessToken($_GET,
                       unserialize($_SESSION['TWITTER_REQUEST_TOKEN']));

       //akses token didapatkan
       $_SESSION['TWITTER_ACCESS_TOKEN'] = serialize($token);

       //you can save the access token in database if needed 😉

       //unset request token
       $_SESSION['TWITTER_REQUEST_TOKEN'] = null;

       //redirect to application...
       header('location:./index.php');
    } else {
        echo 'you denied the application';
    }
}else{
    exit('Invalid callback request. Oops. Sorry.');
}

4. index.php ~ the application page 😉


include_once './common.php';

// Do we already have a valid Access Token or need to go get one?
if (!isset($_SESSION['TWITTER_ACCESS_TOKEN'])) {

    // Guess we need to go get one!
    $token = $consumer->getRequestToken();
    $_SESSION['TWITTER_REQUEST_TOKEN'] = serialize($token);

    // Now redirect user to Twitter site so they can log in and
    // approve our access
    $consumer->redirect();
} else {
    $token = unserialize($_SESSION['TWITTER_ACCESS_TOKEN']);

    $twitter = new Zend_Service_Twitter(array(
                'consumerKey' =>  $config['consumerKey'],
                'consumerSecret' => $config['consumerSecret'],
                'accessToken' => unserialize($_SESSION['TWITTER_ACCESS_TOKEN'])
    ));

    //test update status
    $response = $twitter->status->update('ini test update status cuy ;)');
}

Image :
http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Oauth_logo.svg/220px-Oauth_logo.svg.png

Referensi :
http://www.joeyrivera.com/2010/twitter-api-oauth-authentication-and-zend_oauth-tutorial/
http://framework.zend.com/manual/en/zend.oauth.introduction.html
http://framework.zend.com/manual/en/zend.service.twitter.html

Advertisements

6 Responses

Subscribe to comments with RSS.

  1. Dhani Bin Zain said, on January 18, 2012 at 4:56 pm

    Bos, mau nanya, pernah nyoba ga bikin stored procedure di mysql, ttg cursor yang table_name nya itu dinamycs? thx…

    • samsonasik said, on January 29, 2012 at 12:47 am

      khusus untuk tablename, di MySQL setahu saya tdk bisa dijadikan parameter dalam stored procedure, demikian 🙂

  2. andiliee said, on March 5, 2012 at 11:21 am

    oraclear clear …. iso iks san, tapi nek neng mysql ra mudeng aku …. 😀

    Piye kabarmu, salam sukses ae ….

  3. samsonasik said, on March 5, 2012 at 12:31 pm

    hoho, Alhamdulillah sae, piye tugas akhire wis rampung rung ? hehehe, yo podho2, salam sukses selalu 😉

  4. andiliee said, on March 6, 2012 at 3:55 pm

    Alhamdulillah, kantun refisi kata-kata + sertifikasi OCP…..

    Ojo legan terus, duite entek mengko. wkwkwk. Ok salam sukses ….

  5. samsonasik said, on September 27, 2012 at 1:10 pm

    Siiip


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

%d bloggers like this: