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
2. Kedua kita harus mempunyai Facebook API ID dan SECRET KEY dari facebook dan bisa dibuat di https://developers.facebook.com/apps/
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.

Tidak ada komentar:
Posting Komentar