Google Sign-In: apa itu, masuk melalui Google dan OAuth 2.0 SDK

Penulis: IT Sectr Diterbitkan: 2026-04-29 Waktu membaca: 10 mnt

Google Sign-In — adalah SDK dari Google yang mengimplementasikan autentikasi pengguna melalui akun Google di aplikasi seluler dan web. Di dasar teknologi ini terdapat protokol OAuth 2.0 yang memungkinkan mendapatkan token akses ke Google API tanpa mengirimkan kata sandi ke aplikasi pihak ketiga. Lebih dari 3 miliar perangkat Android mendukung Google Sign-In, menjadikannya cara masuk paling umum di aplikasi seluler. Menurut Google Identity Platform, 2025, integrasi SDK mengurangi waktu pendaftaran sebesar 60% dan meningkatkan konversi pengguna.

Poin Utama

  • Google Sign-In — SDK autentikasi melalui akun Google berbasis OAuth 2.0
  • OAuth 2.0 — protokol otorisasi di mana aplikasi menerima token akses tanpa kata sandi pengguna
  • Credential Manager — API Android modern untuk masuk melalui Google tanpa WebView
  • ID Token — JSON Web Token (JWT) yang berisi data identitas pengguna
  • Lintas platform — Google Sign-In berfungsi di Android, iOS, web dan platform desktop

Apa itu Google Sign-In?

Google Sign-In — adalah layanan masuk tunggal (Single Sign-On) yang disediakan oleh Google untuk autentikasi pengguna di aplikasi pihak ketiga. SDK memungkinkan pengembang untuk mengintegrasikan masuk melalui akun Google tanpa perlu membuat sistem pendaftaran sendiri. Teknologi ini didasarkan pada protokol OAuth 2.0 dan OpenID Connect, memungkinkan perolehan data identitas pengguna: nama, email, avatar dan pengidentifikasi unik.

Tidak seperti autentikasi tradisional melalui email dan kata sandi, Google Sign-In menghilangkan kebutuhan untuk mengingat kata sandi dan melalui prosedur pendaftaran. Pengguna memilih akun Google di perangkat, mengonfirmasi izin, dan aplikasi menerima token akses. Menurut Google Identity Platform (2025), aplikasi dengan Google Sign-In menunjukkan 52% lebih banyak pendaftaran berhasil dibandingkan dengan formulir email/kata sandi.

Google Sign-In mendukung tiga skenario penggunaan: autentikasi pengguna (mendapatkan ID Token), otorisasi akses ke Google API (mendapatkan Access Token) dan autentikasi tanpa hambatan (Silent Sign-In) untuk pengguna yang sudah diotorisasi. Setiap skenario membutuhkan serangkaian izin (scopes) yang berbeda dan mengembalikan jenis token yang berbeda.

Bagaimana OAuth 2.0 bekerja di Google Sign-In

OAuth 2.0 — adalah protokol otorisasi yang memungkinkan aplikasi mendapatkan akses terbatas ke sumber daya pengguna tanpa mengungkapkan kredensialnya. Dalam konteks Google Sign-In, protokol bekerja sebagai berikut: aplikasi meminta otorisasi dari pengguna melalui Google, menerima kode otorisasi sementara, menukarnya dengan token akses dan menggunakan token ini untuk memanggil Google API.

Perbedaan utama OAuth 2.0 dari protokol yang lebih lama — pemisahan peran antara pemilik sumber daya (pengguna), klien (aplikasi), server otorisasi (Google) dan server sumber daya (Google API). Aplikasi tidak pernah menerima kata sandi pengguna — hanya token yang dapat dicabut. Google Identity Platform menggunakan spesifikasi OpenID Connect di atas OAuth 2.0, menambahkan ID Token terstandarisasi dalam format JWT.

ID Token dan Access Token: perbedaan

kotlin
// Contoh mendapatkan ID Token melalui Credential Manager
val googleIdOption = GoogleIdCredentialOption.Builder()
    .setServerClientId(serverClientId)
    .build()

val credentialManager = CredentialManager.create(this)
val request = GetCredentialRequest.Builder()
    .addCredentialOption(googleIdOption)
    .build()

credentialManager.getCredential(request)
    .addOnSuccessListener { result ->
        val credential = result.credential as GoogleIdCredential
        Log.d("SignIn", credential.idToken)
    }

ID Token (JWT) berisi tiga segmen: header dengan algoritma tanda tangan, payload dengan data pengguna (sub, email, name, picture) dan tanda tangan untuk verifikasi. Bagian server aplikasi memverifikasi tanda tangan ID Token menggunakan kunci publik Google dan mengekstrak pengidentifikasi pengguna. Pendekatan ini menjamin bahwa bahkan jika aplikasi klien dikompromikan, penyerang tidak dapat memalsukan token tanpa akses ke kunci privat Google.

Credential Manager: cara baru masuk di Android

Credential Manager — adalah API Android modern, diperkenalkan pada tahun 2023, yang menggabungkan semua metode autentikasi (Google Sign-In, masuk dengan kata sandi, Passkeys) ke dalam satu antarmuka pengguna. Tidak seperti GoogleSignInClient lama, Credential Manager tidak memerlukan WebView untuk masuk — menggunakan Bottom Sheet asli, yang mempercepat autentikasi dan meningkatkan pengalaman pengguna.

Keuntungan utama Credential Manager — UX seragam untuk semua jenis kredensial. Pengguna melihat satu kotak dialog di mana mereka dapat memilih: masuk melalui Google, menggunakan Passkey atau memasukkan kata sandi. Pengembang tidak perlu mengelola alur autentikasi yang berbeda — Credential Manager mengabstraksi interaksi dengan Google Sign-In, Smart Lock dan Passkeys. Google merekomendasikan Credential Manager sebagai metode integrasi utama Google Sign-In untuk Android 14+.

ParameterGoogleSignInClient (usang)Credential Manager
API MinimalAndroid 4.4 (API 19)Android 4.4 (API 19)
AntarmukaWebView / BottomSheetBottom Sheet asli
Dukungan PasskeysTidakYa
Ukuran SDK~500 KB~150 KB
StatusDeprecated (2024)Direkomendasikan oleh Google

Migrasi dari GoogleSignInClient ke Credential Manager

Migrasi dari GoogleSignInClient ke Credential Manager memerlukan perubahan logika klien: alih-alih GoogleSignInOptions digunakan GoogleIdCredentialOption, dan alih-alih GoogleSignIn.getSignedInAccountFromIntent — penanganan hasil melalui GetCredentialResponse. Bagian server tidak memerlukan perubahan karena ID Token tetap dalam format JWT yang sama. Menurut Google I/O 2024, sekitar 40% aplikasi di Google Play sudah beralih ke Credential Manager.

Konfigurasi Google Sign-In di proyek Android

Integrasi Google Sign-In di aplikasi Android dimulai dengan konfigurasi proyek di Google Cloud Console. Langkah pertama — membuat OAuth 2.0 Client ID untuk Android: untuk ini, package name aplikasi dan SHA-1 dari sertifikat tanda tangan ditentukan. Google menggunakan data ini untuk memverifikasi bahwa permintaan autentikasi benar-benar berasal dari aplikasi Anda, bukan dari klien palsu.

Setelah membuat klien di Google Cloud Console, pengembang menambahkan dependensi Credential Manager di build.gradle dan mengonfigurasi GoogleIdCredentialOption dengan serverClientId. Penting: serverClientId — adalah Client ID aplikasi web dari proyek Google Cloud yang sama, yang digunakan oleh bagian server untuk verifikasi ID Token. Aplikasi klien tidak memverifikasi token — hanya menerima dan meneruskannya ke server.

kotlin
// build.gradle (app) dependencies
implementation("androidx.credentials:credentials:1.5.0")
implementation("androidx.credentials:credentials-play-services-auth:1.5.0")
implementation("com.google.android.libraries.identity.googleid:googleid:1.1.0")

// Permintaan Google Sign-In melalui Credential Manager
suspend fun requestGoogleSignIn(context: Context): String? {
    val credentialManager = CredentialManager.create(context)
    val googleIdOption = GoogleIdCredentialOption.Builder()
        .setServerClientId(BuildConfig.SERVER_CLIENT_ID)
        .setAutoSelectEnabled(true)
        .build()

    val result = credentialManager.getCredential(
        context as Activity,
        GetCredentialRequest.Builder()
            .addCredentialOption(googleIdOption)
            .build()
    )
    return (result.credential as GoogleIdCredential).idToken
}

Setelah menerima ID Token di klien, aplikasi mengirimkannya ke server sendiri untuk verifikasi dan pembuatan sesi. Server memverifikasi tanda tangan JWT menggunakan kunci publik Google (tersedia di URL https://www.googleapis.com/oauth2/v3/certs), masa berlaku token (exp) dan nilai bidang aud — harus cocok dengan serverClientId. Setelah verifikasi, server membuat sesi sendiri, misalnya, mengeluarkan JWT internal atau Session Token.

Google Sign-In di iOS: konfigurasi dan fitur

Integrasi Google Sign-In di iOS dilakukan melalui SDK GoogleSignIn-iOS, tersedia melalui CocoaPods atau Swift Package Manager. Proses konfigurasi mencakup pembuatan Client ID untuk iOS di Google Cloud Console (dengan menentukan Bundle Identifier), menambahkan URL Scheme untuk panggilan balik dan mengonfigurasi AppDelegate untuk menangani URL yang dikembalikan oleh Google setelah autentikasi.

Perbedaan penting versi iOS Google Sign-In dari Android — kebutuhan untuk mengonfigurasi URL Scheme dan Info.plist. Google SDK menggunakan Universal Links untuk panggilan balik, tetapi untuk fallback diperlukan URL Scheme berbentuk `com.googleusercontent.apps.[CLIENT_ID]`. Juga diperlukan konfigurasi Keychain Sharing untuk menyimpan refresh token antar peluncuran aplikasi. Menurut dokumentasi Google Identity, SDK iOS mendukung iOS 15 dan lebih baru.

swift
// Konfigurasi Google Sign-In di iOS
import GoogleSignIn

class SignInManager: ObservableObject {
    func signIn(presenting viewController: UIViewController) {
        GIDSignIn.sharedInstance.signIn(
            withPresenting: viewController
        ) { signInResult, error in
            guard let result = signInResult else {
                print("Sign in failed: \(error)")
                return
            }
            let idToken = result.user.idToken.tokenString
            // Mengirim ID Token ke server
            sendTokenToBackend(idToken)
        }
    }
}

Di iOS, Google Sign-In mendukung Silent Sign-In untuk pengguna yang sebelumnya telah diotorisasi. Metode restorePreviousSignIn secara otomatis memulihkan sesi jika refresh token disimpan di Keychain. Ini sangat penting untuk aplikasi di mana pengguna tidak perlu masuk kembali setiap kali aplikasi dijalankan. Menurut Google, Silent Sign-In berhasil dalam 85% kasus pada perangkat dengan sesi Google aktif.

Penanganan token dan keamanan

Keamanan Google Sign-In dibangun di tiga tingkat: verifikasi klien (tanda tangan SHA-1 aplikasi), enkripsi transportasi (HTTPS/TLS) dan tanda tangan kriptografi JWT. ID Token yang diterima dari Google ditandatangani menggunakan algoritma RS256 (RSA dengan SHA-256). Bagian server aplikasi harus memverifikasi tanda tangan token, masa berlaku dan issuer (iss) — hanya accounts.google.com.

Access Token — adalah token sementara (berlaku 1 jam) yang memberikan akses ke Google API (Google Drive, Google Calendar, YouTube dll.). Tidak seperti ID Token, Access Token tidak berisi informasi tentang pengguna — ini adalah string opaque yang digunakan server Google API untuk mengotorisasi permintaan. Refresh Token — token berumur panjang yang memungkinkan mendapatkan Access Token baru tanpa pengguna harus masuk kembali. Refresh Token hanya dikeluarkan saat login pertama dan dapat dicabut oleh pengguna di pengaturan akun Google.

kotlin
// Contoh pemrosesan ID Token di server (pseudocode)
fun verifyGoogleToken(idToken: String): User? {
    val verifier = GoogleIdTokenVerifier.Builder(
        NetHttpTransport(), GsonFactory.getDefaultInstance()
    ).setAudience(listOf(CLIENT_ID))
     .build()

    val token = verifier.verify(idToken) ?: return null
    val payload = token.payload

    return User(
        id = payload.subject,
        email = payload.email,
        name = payload.get("name") as String
    )
}

Refresh Token dan manajemen sesi

Rekomendasi keamanan: jangan pernah mengirim ID Token melalui saluran yang tidak aman, gunakan HTTPS untuk semua permintaan ke server, periksa masa berlaku token (bidang exp) dan issuer (iss). Di klien, jangan simpan token di SharedPreferences tanpa enkripsi — gunakan EncryptedSharedPreferences atau Android Keystore. Google Sign-In tidak dirancang untuk autentikasi server-ke-server — untuk ini gunakan Service Accounts.

Contoh kode: integrasi Google Sign-In di Kotlin

Contoh lengkap integrasi Google Sign-In di aplikasi Android menggunakan Credential Manager dan ViewModel. Aplikasi menampilkan tombol masuk, setelah autentikasi mengirim ID Token ke server dan menampilkan informasi tentang pengguna. Kode menggunakan coroutine untuk kerja asinkron dengan Credential Manager.

kotlin
class SignInViewModel: ViewModel() {
    private val cm = CredentialManager.create(getApplication())

    private val googleOption = GoogleIdCredentialOption.Builder()
        .setServerClientId(BuildConfig.SERVER_CLIENT_ID)
        .build()

    suspend fun signIn(): SignInResult {
        return try {
            val response = cm.getCredential(
                GetCredentialRequest.Builder()
                    .addCredentialOption(googleOption)
                    .build()
            )
            val credential = response.credential as GoogleIdCredential
            SignInResult.Success(credential.idToken)
        } catch (e: GetCredentialCancellationException) {
            SignInResult.Cancelled
        }
    }
}

sealed class SignInResult {
    data class Success(val idToken: String) : SignInResult()
    data class Error(val message: String) : SignInResult()
    data class Cancelled : SignInResult()
}

Setelah autentikasi berhasil, aplikasi harus mengirim ID Token ke server sendiri untuk verifikasi dan pembuatan sesi. Disarankan menggunakan HTTPS dan mengirim token di body permintaan POST. Server mengembalikan token sesi sendiri, yang disimpan klien di EncryptedSharedPreferences. Pada setiap permintaan berikutnya ke server, digunakan token internal, bukan ID Token Google.

Kesalahan umum saat integrasi dan solusinya

Kesalahan umum pertama — ketidakcocokan SHA-1 sertifikat. Google Cloud Console mengikat OAuth 2.0 Client ID ke sidik jari SHA-1 sertifikat tanda tangan. Jika aplikasi dibangun dengan kunci debug, tetapi Client ID dibuat untuk kunci release, Google Sign-In akan mengembalikan error 12501 (SIGN_IN_FAILED). Solusi — tambahkan kedua SHA-1 (debug dan release) di Google Cloud Console atau gunakan satu Client ID untuk pengembangan dan terpisah untuk produksi.

Masalah umum kedua — serverClientId salah. Pengembang sering menggunakan Client ID Android alih-alih Client ID aplikasi web di parameter serverClientId Credential Manager. Google memerlukan tepat web-client ID untuk menghasilkan ID Token yang ditujukan untuk verifikasi server. Android Client ID hanya digunakan untuk identifikasi aplikasi dalam proses autentikasi. Periksa apakah serverClientId sesuai dengan aplikasi web di Google Cloud Console.

Kesalahan ketiga — mengabaikan penanganan pembatalan. Pengguna dapat menutup dialog Google Sign-In tanpa menyelesaikan autentikasi. Credential Manager melempar GetCredentialCancellationException yang perlu ditangani secara terpisah dari kesalahan lain. Banyak pengembang menangani semua pengecualian sebagai kesalahan, menampilkan pesan “Masuk gagal” kepada pengguna, padahal pengguna hanya membatalkan operasi. Penanganan yang benar: saat Cancelled — jangan tampilkan apa pun, cukup kembali ke keadaan awal.

Pertanyaan yang Sering Diajukan

Versi Google Sign-In SDK apa yang digunakan pada tahun 2026?

Disarankan menggunakan Credential Manager (AndroidX Credentials) untuk Android dan GIDSignIn SDK melalui Swift Package Manager untuk iOS. Credential Manager — API modern yang didukung Google, yang menggabungkan Google Sign-In, Passkeys dan masuk dengan kata sandi dalam satu antarmuka. GoogleSignInClient yang usang (com.google.android.gms:auth) tidak lagi direkomendasikan untuk digunakan.

Apa perbedaan antara ID Token dan Access Token di Google Sign-In?

ID Token — adalah JWT yang berisi informasi tentang pengguna (nama, email, ID unik). Digunakan untuk autentikasi di sisi server aplikasi. Access Token — string opaque untuk akses ke Google API (Google Drive, Calendar). ID Token berlaku 1 jam, Access Token juga 1 jam, tetapi dapat diperbarui melalui Refresh Token.

Bisakah Google Sign-In digunakan tanpa verifikasi server?

Secara teknis bisa, tetapi tidak aman. Jika memverifikasi ID Token hanya di klien, penyerang dapat mendekompilasi aplikasi dan mengekstrak logika verifikasi. Verifikasi server menggunakan kunci publik Google memastikan bahwa token benar-benar dikeluarkan oleh Google dan tidak dipalsukan. Untuk aplikasi tanpa server, gunakan Firebase Authentication.

Mengapa Google Sign-In mengembalikan error 12501?

Error 12501 (SIGN_IN_FAILED) terjadi ketika SHA-1 sertifikat aplikasi tidak cocok dengan yang ditentukan di Google Cloud Console. Solusi: tambahkan SHA-1 dari sertifikat debug (dari Android Studio) dan sertifikat release di konsol. Juga periksa apakah package name di konsol cocok dengan build.gradle. Setelah perubahan, mungkin diperlukan hingga 24 jam untuk propagasi.

Apakah Google Sign-In mendukung masuk tanpa internet?

Tidak, Google Sign-In memerlukan koneksi internet untuk berkomunikasi dengan server Google. Jika perangkat offline, gunakan mekanisme caching sesi: setelah berhasil masuk, simpan token di EncryptedSharedPreferences dan periksa validitasnya saat peluncuran berikutnya. Jika tidak ada jaringan, tampilkan data yang disimpan dan sarankan untuk masuk nanti.

Kesimpulan

  • Google Sign-In — SDK autentikasi melalui akun Google berbasis OAuth 2.0 dan OpenID Connect
  • OAuth 2.0 — protokol di mana aplikasi menerima token akses tanpa memberikan kata sandi pengguna
  • Credential Manager — API Android modern untuk Google Sign-In dengan Bottom Sheet asli dan dukungan Passkeys
  • ID Token — JWT dengan data pengguna yang diverifikasi server menggunakan kunci publik Google
  • Keamanan didasarkan pada tanda tangan SHA-1 aplikasi, HTTPS dan verifikasi kriptografi JWT
  • Integrasi iOS memerlukan konfigurasi URL Scheme, Keychain Sharing dan GoogleSignIn SDK melalui Swift Package Manager
  • Kesalahan umum — ketidakcocokan SHA-1, serverClientId salah dan mengabaikan CancellationException

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga