Metode ini sering digunakan oleh para web developer untuk aplikasi berbasis web, dimana proses login cukup menggunakan akun-akun yang ada di beberapa web service seperti facebook, google, twitter dan lain-lain.
Untuk kali ini saya menggunakan facebook sebagai sarana login untuk masuk kedalam halaman member.
1. Yang dibutuhkan adalah sebuah librari HybridAuth yang dapat di download di Github Download .
HybridAuth dapat menggunakan beberapa autentikasi yang disediakan yaitu :
- Yahoo
- Live
- AOL
- MySpace
- Github
3. Kita harus memiiliki domain yang valid alias tidak gratisan, karena disaat membuat Facebook API ID akan ditanyakan domain tersebut.
setelah syarat semua di atas terpenuhi, maka berikut coding PHP-nya.
1. Buat file config.php
$config = array("base_url" => "diisi dengan OAuth2 URL anda", "providers" => array ( "Facebook" => array ( "enabled" => true, "keys" => array ( "id" => "FACEBOOK_DEVELOER_KEY", "secret" => "FACEBOOK_SECRET" ), "scope" => "email, user_about_me, user_birthday, user_hometown" //optional. ), ), // if you want to enable logging, set 'debug_mode' to true then provide a writable file by the web server on "debug_file" "debug_mode" => false, "debug_file" => "debug.log", );base_url diisi dengan alamat index.php dari HybridAuth library yang sudah kita upload ke webserver. di tempat saya, saya isi dengan http://demos.antefer.web.id/oauth2demo/hybridauth/index.php.
file tersebut berisi fungsi sebagai halaman OAuth Callback .
2. Buat file index.php sebagai halaman utama, seperti ini :
<html> <body> <a href="https://nama.domain.anda/login-proses.php?provider=Facebook">Login Dengan Facebook</a> </body> </html>
3. kemudian buat file login-proses.php
<?php session_start(); include('config.php'); include('hybridauth/Hybrid/Auth.php'); if(isset($_GET['provider'])) { $provider = $_GET['provider']; try{ $hybridauth = new Hybrid_Auth( $config ); $authProvider = $hybridauth->authenticate($provider); $user_profile = $authProvider->getUserProfile(); if($user_profile && isset($user_profile->identifier)) { echo "<b>Name</b> :".$user_profile->displayName."<br>"; echo "<b>Profile URL</b> :".$user_profile->profileURL."<br>"; echo "<b>Image</b> :".$user_profile->photoURL."<br> "; echo "<img src='".$user_profile->photoURL."'/><br>"; echo "<b>Email</b> :".$user_profile->email."<br>"; echo "<br> <a href='logout.php'>Logout</a>"; } } catch( Exception $e ) { switch( $e->getCode() ) { case 0 : echo "Unspecified error."; break; case 1 : echo "Konfigurasi Hybridauth error."; break; case 2 : echo "Provider tidak terkonfigurasi."; break; case 3 : echo "Provider tidak aktif."; break; case 4 : echo "Kesalahan konfigurasi API."; break; case 5 : echo "Autentikasi di batalkan oleh user atau autentikasi di tolah provider"; break; case 6 : echo "Gagal menanpilkan user profile."; $authProvider->logout(); break; case 7 : echo "User tidak memilik akun di provider."; $authProvider->logout(); break; case 8 : echo "Provider tidak support dengan metode ini."; break; } echo "<br /><br /><b>Original error message:</b> " . $e->getMessage(); echo "<hr /><h3>Trace</h3> <pre>" . $e->getTraceAsString() . "</pre>"; } } ?>
4. Kemudian buat file logout.php untuk proses logout
<?php session_start(); session_destroy(); header("Location: index.php"); ?>
Demikian sedikit sharing dari saya, semoga bermanfaat dan bisa di kembangkan menggunakan service yang lain seperti autentikasi google, twitter, dan lain-lain sesuai kebutuhan...
O iya..... untuk demo dapat dicoba di http://demos.antefer.web.id/oauth2demo/.
Demo tersebut tidak menyimpan informasi anda kedalam database, murni authentikasi via Facebook.