Pada panduan ini, kita akan membuat sistem login dengan Google yang hanya menggunakan HTML, CSS, dan JavaScript. Sistem ini memungkinkan pengguna untuk melakukan autentikasi melalui akun Google mereka. Dalam tutorial ini, kita akan menggunakan Google Identity Services, yang menggantikan API Google+ dan platform lama lainnya, untuk menangani proses OAuth 2.0. Panduan lengkap ini mencakup persiapan proyek, penyiapan HTML, penataan CSS, dan logika JavaScript untuk menangani proses login, serta beberapa opsi kustomisasi tombol untuk pengalaman pengguna yang lebih baik.
Sebelum memulai, pastikan bahwa Anda telah:
Berikut adalah struktur dasar proyek yang akan kita gunakan:
| File | Deskripsi |
|---|---|
| index.html | Halaman utama yang berisi elemen HTML untuk tombol login dan penyisipan skrip API. |
| styles.css | File CSS untuk menata tampilan halaman dan tombol login Google. |
| script.js | File JavaScript untuk menangani interaksi login dengan Google dan manipulasi DOM. |
Mulailah dengan membuat file HTML, misalnya index.html. Kita akan memasukkan elemen tombol dan menyisipkan skrip Google API. Pastikan untuk mengganti YOUR_CLIENT_ID dengan Client ID yang Anda dapatkan dari Google Cloud Console.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login dengan Google</title>
<link rel="stylesheet" href="styles.css">
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
</head>
<body>
<div class="container">
<h1>Login dengan Google</h1>
<!-- Tombol sign-in default dari Google Identity Services -->
<div id="g-signin2"></div>
<!-- Tombol custom sebagai alternatif pilihan -->
<div id="customBtn">Login dengan Google</div>
</div>
<script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
<script src="script.js"></script>
</body>
</html>
File CSS akan menangani tampilan halaman secara keseluruhan dan menata tombol login agar terlihat menarik dan responsif. Anda dapat menyesuaikan nilai properti sesuai dengan desain halaman Anda.
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f4f4f4;
}
.container {
text-align: center;
background: #fff;
padding: 2em;
border-radius: 8px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
}
#g-signin2 {
margin-bottom: 20px;
}
#customBtn {
display: inline-block;
background-color: white;
color: #444;
width: 240px;
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
box-shadow: 1px 1px 1px gray;
cursor: pointer;
transition: background-color 0.3s;
}
#customBtn:hover {
background-color: #f0f0f0;
}
File script.js akan menangani proses autentikasi pengguna melalui Google. Di sini kita menggunakan dua metode untuk menampilkan tombol login:
gapi.signin2.render() untuk merender tombol default Google.gapi.auth2.attachClickHandler() agar tombol kustom dapat menginisiasi autentikasi.function onSuccess(googleUser) {
// Mendapatkan profil pengguna dari Google
var profile = googleUser.getBasicProfile();
console.log("ID: " + profile.getId());
console.log("Name: " + profile.getName());
console.log("Image URL: " + profile.getImageUrl());
console.log("Email: " + profile.getEmail());
// Di sini Anda dapat melakukan tindakan lebih lanjut, seperti mengirim token ke server
}
function onFailure(error) {
console.error("Error during Google Sign-In:", error);
}
function renderButton() {
// Render tombol default dari Google
gapi.signin2.render('g-signin2', {
'scope': 'profile email',
'width': 240,
'height': 50,
'longtitle': true,
'theme': 'dark',
'onsuccess': onSuccess,
'onfailure': onFailure
});
// Untuk tombol kustom, inisialisasi Auth2 dan lampirkan click handler
gapi.load('auth2', function() {
var auth2 = gapi.auth2.init({
client_id: 'YOUR_CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin'
});
attachCustomSignin(document.getElementById('customBtn'), auth2);
});
}
function attachCustomSignin(element, auth2) {
auth2.attachClickHandler(element, {},
function(googleUser) {
var profile = googleUser.getBasicProfile();
console.log("Custom Button - Logged in as: " + profile.getName());
// Tindakan lanjutan setelah login sukses
}, function(error) {
console.error(JSON.stringify(error, undefined, 2));
}
);
}
Pastikan untuk mengganti YOUR_CLIENT_ID.apps.googleusercontent.com dengan Client ID asli yang diperoleh dari Google Cloud Console. Skrip di atas mengimplementasikan dua pendekatan berbeda guna memberikan fleksibilitas dalam tampilan antarmuka:
gapi.signin2.render() untuk langsung memanfaatkan tampilan resmi Google yang telah didesain dengan baik.gapi.auth2.attachClickHandler() agar Anda bisa mendesain tombol sesuai keperluan dengan kontrol penuh pada DOM HTML & CSS.Saat pengguna mengklik tombol login, alur autentikasi OAuth 2.0 Google dijalankan. Berikut adalah langkah utama dalam proses ini:
Baik tombol default maupun tombol kustom men-trigger fungsi autentikasi JavaScript. Selama proses ini, permintaan untuk profil dan email pengguna dikirim ke Google.
Setelah autentikasi berhasil, Google mengembalikan objek googleUser yang mengandung informasi profil. Data ini mencakup ID, nama, email, dan URL foto profil pengguna.
Fungsi onSuccess menangani data yang diterima, mencetak informasi ke konsol, dan biasanya meneruskan token ke server untuk verifikasi lebih lanjut. Di sisi server, token dapat diverifikasi dan data disimpan ke dalam database untuk manajemen sesi pengguna.
Penting untuk diketahui bahwa dalam implementasi autentikasi berbasis Google:
Setelah Anda mengonfigurasi kode HTML, CSS, dan JS sesuai petunjuk di atas, lakukan langkah-langkah berikut untuk menguji sistem login:
Jika terdapat error, periksa:
YOUR_CLIENT_ID telah diganti dengan benar.async dan defer pada tag skrip).onFailure atau konsol log untuk debugging.| Komponen | Deskripsi dan Fungsi |
|---|---|
| index.html | File utama yang berisi elemen HTML untuk tombol default dan kustom, serta pemanggilan skrip Google API. |
| styles.css | Menangani tata letak dan desain tombol login serta penataan halaman secara keseluruhan. |
| script.js | Mengimplementasikan logika autentikasi Google menggunakan gapi.signin2.render() dan gapi.auth2.attachClickHandler(). |
| Google API Script | Skrip dari https://apis.google.com/js/platform.js yang menyediakan fungsi tampilan dan autentikasi Google. |
| OAuth Consent Screen | Konfigurasi pada Google Cloud Console yang mengatur izin akses dan data pengguna yang diminta. |
Untuk informasi lebih lanjut dan dokumentasi terkait implementasi login Google, berikut adalah beberapa sumber yang direkomendasikan:
Jika Anda ingin mendalami topik autentikasi dan integrasi API, berikut adalah beberapa pertanyaan pencarian terkait yang dapat memperluas pemahaman Anda:
Dengan mengikuti langkah-langkah di atas, Anda sekarang memiliki skrip interaksi login Google yang lengkap menggunakan HTML, CSS, dan JavaScript. Pastikan Anda selalu meninjau dokumentasi resmi dari Google untuk mendapatkan pembaruan terbaru dan penyesuaian terhadap kebijakan API. Selamat mencoba dan semoga sukses dalam mengimplementasikan autentikasi pengguna di aplikasi web Anda!