Membuat Login Dengan Akun Google di PHP

Login dengan akun google di PHP
Pada kesempatan kali ini kita akan belajar bagaimana caranya membuat login dengan menggunakan akun google di php.

Struktur folder

langsung saja berikut caranya:

1. Download oauth2 google di https://github.com/thephpleague/oauth2-google
2. Run composer install, caranya sama seperti pada artikel https://www.teknikkoding.com/php/cara-mengirim-email-di-php-menggunakan-phpmailer/
3. Sebelumnya kamu harus login dulu ke akun google
4. Klik https://developers.google.com/identity/sign-in/web/sign-in
5. Scroll kebawah lalu klik configure a project


6. Kasih nama project dan klik next


7. Kasih nama produk dan klik next


8. Pilih Web server dan autorized url saya mengisi http://localhost/google/login.php dan klik next


9. Copy client id dan client secret dan klik done

Paste client id dan client secret dan jangan lupa juga isikan redirectUri kedalam login.php

login.php

<?php
session_start();
use League\OAuth2\Client\Provider\Google;
include 'oauth2-google/vendor/autoload.php';

$provider = new Google([
    'clientId'     => '',
    'clientSecret' => '',
    'redirectUri'  => 'http://localhost/google/login.php' // optional; used to restrict access to users on your G Suite/Google Apps for Business accounts
]);

if (!empty($_GET['error'])) {

    // Got an error, probably user denied access
    exit('Got error: ' . htmlspecialchars($_GET['error'], ENT_QUOTES, 'UTF-8'));

} elseif (empty($_GET['code'])) {

    // If we don't have an authorization code then get one
    $authUrl = $provider->getAuthorizationUrl();
    $_SESSION['oauth2state'] = $provider->getState();
    header('Location: ' . $authUrl);
    exit;

} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    // State is invalid, possible CSRF attack in progress
    unset($_SESSION['oauth2state']);
    exit('Invalid state');

} else {

    // Try to get an access token (using the authorization code grant)
    $token = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    // Optional: Now you have a token you can look up a users profile data
    try {

        // We got an access token, let's now get the owner details
        $ownerDetails = $provider->getResourceOwner($token);

        // Use these details to create a new profile
        //
        $_SESSION['login'] = $ownerDetails->toArray();

        header("location: index.php");

    } catch (Exception $e) {

        // Failed to get user details
        exit('Something went wrong: ' . $e->getMessage());

    }
}
?>

index.php

<?php session_start();?>
<!DOCTYPE html>
<html>
<head>
  <title>LOGIN DENGAN GOOGLE</title>
</head>
<body>
<table>
<?php 
if(@$_SESSION['login']):
$login = $_SESSION['login'];
foreach ($login as $key => $value):
?>
<tr>
  <th><?php echo $key;?></th>
  <td><?php echo (substr($value, 0,5)=='https')?"<img width='100' src='".$value."' />":$value;?></td>
</tr>
<?php
endforeach;
else:
?>
Anda belum login klik disini untuk <a href='login.php'>login</a>
<?php
endif;
?>
</table>
</body>
</html>

logout.php

<?php session_start(); session_destroy();?>
<!DOCTYPE html>
<html>
<head>
    <title>logout</title>
</head>
<body>
Anda berhasil logout aplikasi
</body>
</html>

Jika semua file sudah dibuat Lalu coba jalankan http://localhost/google, dan coba untuk login memakai akun lain. Bila berhasil akan menampilkan data login yang bersangkutan. Selamat mencoba 🙂

Informasi penting yang perlu diketahui saat memasukan redirectUri pada google harus sama dengan yang discript kita. Contonya kalau kita memasukan http://localhost/google/login.php maka discript juga harus http://localhost/google/login.php kalau misal tidak sama contohnya di script https tapi dipengaturan google http ini akan meyebabkan error.

pada bagian $_SESSION[‘login’] = $ownerDetails->toArray(); kita mengambil nilai array agar dapat ditampilkan didalam session seperti contohnya dalam memanggil nama

<?php 
session_start(); 
echo $_SESSION['login']['name']; 
?>

Pada bagian (substr($value, 0,5)==’https’)?”<img width=’100′ src='”.$value.”‘ />”:$value; admin menggunakan operator ternary yaitu ?: jadi jika match https jadikan gambar.

Coba demonya disini https://demo.teknikkoding.com/google/

Related posts

Leave a Comment