Monday, March 11, 2013

Membuat login google connect dengan OpenID

Halo, akhirnya sempat lagi neh buat nulis. Berhubung gw lagi sibuk skripsi, jadi gw lebih sering koprek2 script deh. Nah jadi hari ini gw akan sedikit membuat tutorial mengenai API. Udah tahu API kan ya? API merupakan singkatan dari Application Programming Interface. API biasanya berjalan di client side, oleh karena itu memiliki tujuan agar tidak membebani server. Kali ini gw akan mengimplementasikan openID untuk login via google connect. Nah, supaya semua script ini berjalan, pastikan anda telah mengupload di server hosting karena koding tidak akan berjalan di server localhost.

Pertama kita buat halaman login sederhana beri dengan nama index.php
<?php
session_start(); //mulai session disini
if (isset($_SESSION['id'])) {
    header("location: home.php"); //jika terdapat session maka lempar ke home
}

if (array_key_exists("login", $_GET)) { //jika terdapat link login dapatkan providernya dengan get
    $oauth_provider = $_GET['oauth_provider'];
    if ($oauth_provider == 'google') {
        header("Location: login-google.php"); //olah data di login-google.php
    }
}
?>
<title>Google Openid Login</title>
<style type="text/css">
    body{
        background: #f1f1f1;
    }
    #buttons
    {
        text-align:center
    }
    #buttons img,
    #buttons a img
    { border: none;}
    h1
    {
        font-family:Arial, Helvetica, sans-serif;
        color:#999999;
    }

</style>



<div id="buttons">
    <h1>Google OpenID Connect </h1>
     <!-- gambarnya diupload juga ya gan -->
    <a href="?login&oauth_provider=google"><img src="images/googlebtn.png"></a><br/>
    <br />
</div>
Nah untuk gambarnya bisa didownload dari gambar ini : 


Setelah itu buat halaman untuk autentifikasi dengan nama login-google.php
<?php
// importing required files
require 'openid.php'; //load library google
// callback URL
define('CALLBACK_URL', 'namawebanda/getgoogledata.php'); // Isi dengan callback url


// calling login functions
gooleAuthenticate();

function gooleAuthenticate() {
    // Creating new instance
    $openid = new LightOpenID;
    $openid->identity = 'https://www.google.com/accounts/o8/id'; //openID scheme for google authentication
    //setting call back url
    $openid->returnUrl = CALLBACK_URL;
    //finding open id end point from google
    $endpoint = $openid->discover('https://www.google.com/accounts/o8/id'); //openID scheme for google authentication
    $fields =
            '?openid.ns=' . urlencode('http://specs.openid.net/auth/2.0') .
            '&openid.return_to=' . urlencode($openid->returnUrl) .
            '&openid.claimed_id=' . urlencode('http://specs.openid.net/auth/2.0/identifier_select') .
            '&openid.identity=' . urlencode('http://specs.openid.net/auth/2.0/identifier_select') .
            '&openid.mode=' . urlencode('checkid_setup') .
            '&openid.ns.ax=' . urlencode('http://openid.net/srv/ax/1.0') .
            '&openid.ax.mode=' . urlencode('fetch_request') .
            '&openid.ax.required=' . urlencode('email,firstname,lastname') .
            '&openid.ax.type.firstname=' . urlencode('http://axschema.org/namePerson/first') .
            '&openid.ax.type.lastname=' . urlencode('http://axschema.org/namePerson/last') .
            '&openid.ax.type.email=' . urlencode('http://axschema.org/contact/email');
    header('Location: ' . $endpoint . $fields);
}

?>
Jika sudah berhasil maka secara otomatis data tersebut akan dilempar ke file getgoogledata.php. Berikut scriptnya :
<?php

session_start();

if (!empty($_GET['openid_ext1_value_firstname']) && !empty($_GET['openid_ext1_value_lastname']) && !empty($_GET['openid_ext1_value_email'])) {    
    $username = $_GET['openid_ext1_value_firstname'] . $_GET['openid_ext1_value_lastname'];
    $email = $_GET['openid_ext1_value_email'];

    if(!empty($userdata)) {
       
        $_SESSION['username'] = $username;
        $_SESSION['email'] = $email;
        $_SESSION['oauth_provider'] = 'google';
        header("Location: home.php");

    } else {
        // Something's missing, go back to square 1
        echo "Ada error bro";
    }

}
?>
Setelah berhasil maka akan mendirect data ke home.php. Berikut scriptnya.
<?php

//Always place this code at the top of the Page
session_start();
if (!isset($_SESSION['id'])) {
    // Redirection to login page twitter or facebook
    header("location: index.php");
}

echo '<h1>Welcome</h1>';
echo '<br/>Nama Anda : ' . $_SESSION['username'];
echo '<br/>Email : ' . $_SESSION['email'];
echo '<br/>Anda login dengan menggunakan : ' . $_SESSION['oauth_provider'];
echo '<br/>Logout from <a href="logout.php?logout">' . $_SESSION['oauth_provider'] . '</a>';
?>
Nah, untuk library openID bisa dicari di google. Disana banyak kok hehehe.  Gw gak bisa diupload disini hehehe.. Demikian sedikit tutorial dari gw. Kalo ada kesulitan bisa langsung komen disini. Salam Unyu

0 comments: