Tentang codelab ini
1. Ringkasan
Dalam codelab ini, kita akan membangun halaman web sederhana untuk login pengguna. Anda akan menggunakan library JavaScript Google Identity Services untuk menampilkan dan menyesuaikan tombol Login dengan Google.
Yang akan Anda pelajari
- Cara menambahkan tombol Login dengan Google ke halaman web
- Cara menyiapkan aplikasi web OAuth 2.0
- Cara mendekode token ID
- Cara menyesuaikan tombol Login dengan Google
Yang Anda butuhkan
- Editor teks dan tempat untuk menghosting halaman web, lingkungan yang akan kita bahas dalam Codelab ini:
- berjalan secara lokal di terminal komputer Anda, atau
- menggunakan platform seperti Glitch.
- Project Google Cloud. Anda dapat menggunakan project yang sudah ada atau membuat project baru. Akun dan project Google Cloud Platform tersedia gratis.
- Pengetahuan dasar tentang HTML, CSS, JavaScript, dan Chrome DevTools (atau yang setara).
Mari kita mulai.
2. Membuat halaman login
Lanjutkan dan tambahkan contoh kode ini ke dalam file bernama index.html
. Anda dapat melakukannya di komputer menggunakan editor teks favorit atau di platform seperti Glitch.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://accounts.google.com/gsi/client" async></script>
<script>
function decodeJWT(token) {
let base64Url = token.split(".")[1];
let base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
let jsonPayload = decodeURIComponent(
atob(base64)
.split("")
.map(function (c) {
return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
})
.join("")
);
return JSON.parse(jsonPayload);
}
function handleCredentialResponse(response) {
console.log("Encoded JWT ID token: " + response.credential);
const responsePayload = decodeJWT(response.credential);
console.log("Decoded JWT ID token fields:");
console.log(" Full Name: " + responsePayload.name);
console.log(" Given Name: " + responsePayload.given_name);
console.log(" Family Name: " + responsePayload.family_name);
console.log(" Unique ID: " + responsePayload.sub);
console.log(" Profile image URL: " + responsePayload.picture);
console.log(" Email: " + responsePayload.email);
}
</script>
</head>
<body>
<!-- g_id_onload contains Google Identity Services settings -->
<div
id="g_id_onload"
data-auto_prompt="false"
data-callback="handleCredentialResponse"
data-client_id="PUT_YOUR_WEB_CLIENT_ID_HERE"
></div>
<!-- g_id_signin places the button on a page and supports customization -->
<div class="g_id_signin"></div>
</body>
</html>
Kode ini adalah campuran HTML dan JavaScript, yang dapat melakukan beberapa hal:
- mengonfigurasi library Google Identity Services ini dengan
g_id_onload
, - menampilkan tombol Login dengan Google menggunakan
g_id_signin
, - menambahkan pengendali fungsi callback JavaScript bernama
handleCredentialResponse
untuk menerima kredensial login pengguna dari Google, dan - Fungsi
decodeJWT
untuk mengonversi kredensial JSON Web Token (JWT) menjadi JSON biasa.
Mungkin ada yang tidak beres dengan data-client_id="PUT_YOUR_WEB_CLIENT_ID_HERE"
.
Untuk saat ini, abaikan saja, kita akan kembali sebentar lagi.
3. Menyajikan halaman web Anda
Kita akan membahas dua lingkungan untuk menyajikan index.html
ke browser:
- menjalankan server web secara lokal di komputer Anda
- platform jarak jauh seperti Glitch.
Pilih yang paling Anda sukai. Setelah penyiapan, kita akan menggunakan URL tersebut untuk mengonfigurasi klien web OAuth.
Secara lokal dari komputer Anda
Pastikan Python3 terinstal di sistem Anda. Penyiapan berbeda menurut OS dan platform, mulai dengan Penyiapan dan Penggunaan Python jika Anda perlu menginstal Python di komputer Anda.
Mulai server web Python di direktori yang berisi index.html
:
$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Server web kini memproses koneksi di port 8000 dan siap menayangkan halaman login Anda. URL-nya adalah
http://localhost:8000
Menggunakan platform jarak jauh
Jika memilih untuk mengedit dan menghosting halaman login menggunakan Glitch (atau yang setara), Anda seharusnya dapat membuka index.html
di panel pratinjau atau tab browser baru.
Biasanya, URL yang akan Anda gunakan adalah nama project yang Anda masukkan saat menyiapkan project glich.com. Misalnya, jika project glitch Anda diberi nama gis-example
, URL-nya adalah https://gis-example.glitch.me
. Tentu saja, Anda akan memilih nama project yang berbeda dan tidak dapat menggunakan nama yang sama. URL-nya adalah
https://<var>your-project-name</var>.glitch.me
Muat halaman
Tunggu sebentar...
Pertama-tama kita harus membuat klien web OAuth 2.0 dan mengkonfigurasinya.
Salin atau catat URL tersebut. URL tersebut akan digunakan pada langkah berikutnya.
4. Menyiapkan klien web OAuth
Mari kita konfigurasikan OAuth agar orang-orang dapat benar-benar login.
- Klik link ini untuk membuat klien OAuth 2.0 Web. Jika diperlukan, wizard akan membantu Anda membuat dan menyiapkan Project Google Cloud baru.
- Pilih Web application dari dropdown Application type.
- Tekan tombol Add URI di bagian Authorized JavaScriptorigin
- Masukkan URL yang menghosting
index.html
dari Langkah 3 Tayangkan halaman web Anda.Dihosting di komputer lokal Anda
Dihosting pada platform jarak jauh
- Tekan Buat
- Salin Client ID baru.
Satu hal lagi yang perlu dibahas.
Kita harus kembali dan memperbarui index.html
untuk menggunakan Client-ID baru. Di editor Anda, ganti PUT_YOUR_WEB_CLIENT_ID_HERE
dengan Client-ID baru. Client ID akan terlihat seperti contoh berikut: 1234567890-abc123def456.apps.googleusercontent.com
.
Ayo masuk!
5. Login
Pertama, buka konsol developer browser Anda. Semua error dan kredensial token ID JWT yang ditampilkan dari Google akan dicatat di sini.
Tekan tombol Login dengan Google!
Yang terjadi selanjutnya mungkin sedikit berbeda:
- Jika saat ini Anda login ke lebih dari satu Akun Google, Anda akan diminta untuk memilih akun yang akan digunakan untuk login ke apl web ini.
- Jika ini pertama kalinya Anda login ke aplikasi web ini, dialog izin akan ditampilkan.
Setelah memilih akun dan memberikan izin Anda secara opsional, Google akan merespons dengan JWT. Fungsi callback handleCredentialResponse
yang berjalan di browser akan menerima JWT.
Dalam Codelab ini, kita mendekode dan mencetak konten JWT. Di aplikasi web produksi, Anda akan memverifikasi dan menggunakan JWT yang didekode untuk melakukan sesuatu yang lebih bermanfaat, seperti membuat akun baru di platform backend atau membuat sesi baru untuk pengguna.
6. Memeriksa token ID JWT
JWT yang dienkode dicatat di konsol developer. Setelah mendekode JWT, beberapa kolom token ID yang biasa digunakan juga akan dicatat ke konsol.
Anda dapat menggunakan alat online seperti jwt.io untuk mendekode JWT.
Atau, jq
di terminal Anda juga dapat digunakan untuk mendekode dan melihat JWT (Anda mungkin perlu menggunakan pengelola paket untuk menginstal jq). Pertama, tempelkan string JWT yang telah dienkode ke dalam tanda kutip ganda:
$ JWT="eyJhbGciOiJSUzI1Ni ... Hecz6Wm4Q"
dan kemudian menggunakan perintah ini untuk memecahkan kodenya
$ echo $JWT | jq -R 'split(".") | .[0],.[1] | @base64d | fromjson'
{
"alg": "RS256",
"kid": "c7e04465649ffa606557650c7e65f0a87ae00fe8",
"typ": "JWT"
}
{
"iss": "https://accounts.google.com",
"azp": "123456789012-s0meRand0mStR1nG.apps.googleusercontent.com",
"aud": "123456789012-s0meRand0mStR1nG.apps.googleusercontent.com",
"sub": "2718281828459045",
"email": "example@example.com",
"email_verified": true,
"nbf": 1744645148,
"name": "Brian Daugherty",
"picture": "https://lh3.googleusercontent.com/a/08a898b88ca4d6407be652d8",
"given_name": "Brian",
"family_name": "Daugherty",
"iat": 1744645448,
"exp": 1744649048,
"jti": "52cd32984b30e178aa88bc2e75e63e055a461fcf"
}
Beberapa kunci dan nilai seperti email, nama, dan foto harus cukup mudah dipahami. Nilai lain digunakan untuk memverifikasi JWT sebelum Anda menggunakannya. Mendapatkan informasi pengguna dari token ID memiliki lebih banyak informasi tentang arti semua kolom.
7. Menyesuaikan tombol
Penempatan tombol login default di halaman dilakukan seperti ini
<div class="g_id_signin"></div>
dan Anda akan melihat tombol ini
Namun, mungkin Anda ingin mengubah warna, ukuran, atau teks agar sesuai dengan tema situs.
Mari kita ubah warna tombol menjadi biru dan ketik Sign up with Google sebagai gantinya.
Buka index.html
, cari elemen g_id_signin
, lalu tambahkan atribut data-theme="filled_blue"
dan data-text="signup_with"
:
<div
class="g_id_signin"
data-theme="filled_blue"
data-text="signup_with"
></div>
Setelah menyimpan dan memuat ulang halaman, Anda akan melihat tombol biru dengan teks baru.
Anda dapat menyesuaikan tombol lebih lanjut, lihat Atribut Data Visual untuk mengetahui daftar opsi lengkap.
8. Referensi Tambahan
Selamat!
Anda telah menambahkan tombol Login dengan Google ke halaman web, mengonfigurasi klien web OAuth 2.0, mendekode token ID JWT, dan mempelajari cara menyesuaikan tampilan tombol tersebut.
Link ini dapat membantu Anda dengan langkah-langkah berikutnya:
- HTML API Layanan Identitas Google
- JavaScript API Layanan Identitas Google
- Cara Menyiapkan Login dengan Google untuk web
- Memverifikasi token ID Google
- Pelajari Project Google Cloud lebih lanjut di sini.
- Metode autentikasi Google Identity