Langsung ke konten

Google Login di Android

GitHub

Dalam panduan ini, Anda akan belajar cara mengatur Google Login dengan Capgo Social Login untuk Android. Saya asumsikan Anda sudah membaca panduan setup umum.

Di bagian ini, Anda akan belajar cara mengatur Google login di Android.

  1. Buat Android client ID.

    1. Klik kolom pencarian

      Kolom pencarian Google Console
    2. Cari credentials dan klik pada APIs and Services satu (nomor 2 pada screenshot)

      Hasil pencarian menampilkan opsi credentials dengan APIs and Services disorot
    3. Klik pada create credentials

      Tombol Create credentials di Google Console
    4. Pilih OAuth client ID

      Opsi OAuth client ID di menu pembuatan credentials
    5. Pilih Android tipe aplikasi

      Pemilihan tipe aplikasi dengan opsi Android yang disorot
    6. Buka Android Studio

    7. Di bagian paling bawah navigator, cari Gradle Scripts

      bagian Gradle Scripts di navigator proyek Android Studio
    8. Cari build.gradle untuk modul app

      file build.gradle (Module: app) di bagian Gradle Scripts
    9. Salin android.defaultConfig.applicationId. Ini akan menjadi package name di konsol Google

      File Build.gradle yang menampilkan konfigurasi applicationId
    10. Sekarang, buka terminal. Pastikan Anda berada di android folder aplikasi Anda dan jalankan ./gradlew signInReport

    Terminal menampilkan perintah gradlew signInReport
    1. Scroll ke bagian atas perintah ini. Anda akan melihat hal berikut. Salin SHA1.
    Output terminal yang menampilkan fingerprint sertifikat SHA1
    1. Sekarang, kembali ke Google Console. Masukkan applicationId sebagai Package Name dan SHA1 Anda di field sertifikat, lalu klik create
    Formulir pembuatan klien Android dengan field package name dan SHA1 terisi
  2. Buat web client (wajib untuk Android)

    1. Buka halaman Create credentials halaman di Google Console

    2. Atur tipe aplikasi menjadi Web

      Pilihan tipe aplikasi dengan opsi Web yang disorot
    3. Klik Create

      Form pembuatan web client dengan tombol Create di bawah
    4. Salin client ID, Anda akan menggunakannya sebagai webClientId di dalam JS/TS code Anda

      Detail Client ID yang menampilkan Web client ID untuk disalin
  3. Ubah MainActivity

    1. Silakan buka aplikasi Anda di Android Studio. Anda bisa menjalankan cap open android

    2. Cari MainActivity.java

      1. Buka app folder

        Folder App di navigator proyek Android Studio
      2. Cari java

        folder Java dalam struktur proyek Android Studio
      3. Cari MainActivity.java dan klik pada item tersebut

        file MainActivity.java dalam struktur package
    3. Modifikasi MainActivity.java. Silakan tambahkan code berikut

      import ee.forgr.capacitor.social.login.GoogleProvider;
      import ee.forgr.capacitor.social.login.SocialLoginPlugin;
      import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;
      import com.getcapacitor.PluginHandle;
      import com.getcapacitor.Plugin;
      import android.content.Intent;
      import android.util.Log;
      import com.getcapacitor.BridgeActivity;
      // ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!
      public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Google Activity Result", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);
      }
      }
      // This function will never be called, leave it empty
      @Override
      public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}
      }
    4. Simpan file

  4. Gunakan Google Login di aplikasi Anda

    1. Pertama, import SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. Panggil initialize. Ini hanya boleh dipanggil sekali.

      // onMounted is Vue specific
      // webClientId is the client ID you got in the web client creation step not the android client ID.
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',
      }
      })
      })
    3. Panggil SocialLogin.login. Buat tombol dan jalankan code berikut saat diklik.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. Konfigurasi emulator untuk testing

    1. Masuk ke Device manager dan klik tombol plus

      Device Manager di Android Studio dengan tombol plus yang disorot
    2. Buat virtual device

      Tombol Create Virtual Device di Virtual Device Configuration
    3. Pilih perangkat apa saja dengan Play Store ikon

      Pemilihan hardware yang menampilkan perangkat dengan dukungan Play Store

      Seperti yang Anda lihat, pixel 8 mendukung Play Store layanan

    4. Klik next

      Tombol Berikutnya di wizard pembuatan perangkat
    5. Pastikan bahwa image OS bertipe Google Play. HARUS bertipe Google Play

      Pemilihan image sistem yang menampilkan image tipe Google Play
    6. Klik berikutnya

      Tombol Berikutnya di layar pemilihan image sistem
    7. Konfirmasi perangkat Anda. Anda dapat memberi nama emulator sesuai keinginan

      Layar verifikasi konfigurasi perangkat dengan tombol Selesai
    8. Masuk ke Device Manager dan jalankan simulator Anda

      Device Manager dengan perangkat virtual terdaftar dan tombol play
    9. Setelah simulator menyala, buka pengaturan di dalamnya

      Emulator Android yang menampilkan aplikasi pengaturan
    10. Masuk ke Google Play

    Layar pengaturan dengan opsi Google Play
    1. Klik Update dan tunggu sekitar 60 detik
    Layar pembaruan Google Play dengan tombol Update
  6. Tes aplikasi Anda

    Jika Anda melakukan semuanya dengan benar, alur login Google seharusnya berfungsi dengan baik:

    Demo alur login Google di Android yang menampilkan proses sign-in dan autentikasi yang berhasil

Jika ada masalah, bandingkan dulu konfigurasi aplikasi Anda dengan nilai di Google Cloud Console. Kegagalan Google Sign-In di Android biasanya disebabkan oleh ketidakcocokan package name, SHA-1, atau client ID.

Di Android, plugin ini menggunakan Google Credential Manager (androidx.credentials dan Sign in with Google), bukan yang legacy GoogleSignInClient API. Error Logcat seperti GetCredentialCustomException: [28444] Developer console is not set up correctly berasal dari stack tersebut.

Filter Logcat dengan GoogleProvider atau CapgoSocialLogin setelah login gagal. Plugin ini mencatat package name, signing SHA-1, dan yang di-mask webClientId agar Anda bisa membandingkannya dengan Google Cloud Console.

Konfigurasi Google Cloud yang diperlukan

Bagian berjudul “Setup Google Cloud yang diperlukan”

Anda memerlukan dua jenis OAuth 2.0 client ID di proyek Google Cloud yang sama:

Tipe clientDigunakan untukDigunakan di
Aplikasi webServer / audiens token IDwebClientId di SocialLogin.initialize()
Android, satu per signing keyMembuktikan APK Anda diizinkan memanggil GoogleHanya di Google Cloud Console. Jangan berikan ID ini ke webClientId

Kesalahan umum adalah menggunakan Android client ID sebagai webClientId. Credential Manager membutuhkan Web client ID di sana. Android client hanya butuh package name dan SHA-1 yang benar yang sudah terdaftar di console.

Buat satu Android OAuth client untuk setiap sertifikat yang menandatangani build yang Anda tes:

  • Debug: dari ./gradlew signingReport untuk varian debug.
  • Release: dari APK atau AAB yang benar-benar Anda instal.
  • Play App Signing: dari Play Console > App integrity > App signing key certificate. Ini wajib untuk build Play Store meskipun SHA-1 upload key Anda sudah terdaftar.

Panduan applicationId di android/app/build.gradle harus sama persis dengan package name Android OAuth client, termasuk .debug akhiran.

Jika OAuth consent screen dalam mode Testing, tambahkan setiap akun Google yang Anda gunakan untuk tes di Audience > Test users. Mempublikasikan aplikasi ke Production tidak diperlukan untuk email dan profile scopes. Digital Asset Links ("assetlinks.json) tidak diperlukan untuk Sign in with Google melalui Credential Manager.

Perubahan di Google Cloud mungkin butuh waktu beberapa jam untuk diterapkan.

Error 28444: Developer console belum dikonfigurasi dengan benar

Bagian berjudul “Error 28444: Developer console is not set up correctly”

Ini hampir selalu berarti Google menolak kombinasi sertifikat signing APK yang terinstal, package name, dan webClientId. Ikuti checklist berikut:

  1. Konfirmasi webClientId adalah Web application client ID dan diakhiri dengan .apps.googleusercontent.com.
  2. Jalankan aplikasi, ulangi error tersebut, dan cek Logcat untuk GoogleProvider, signingSha1=, dan package=.
  3. Di Google Cloud Console > Kredensial, buka client OAuth Android Anda dan verifikasi package name serta SHA-1 yang tepat.
  4. Jika menguji release build, daftarkan SHA-1 dari build tersebut, bukan hanya dari debug keystore.
  5. Jika aplikasi didistribusikan melalui Play Store, daftarkan juga Play App Signing SHA-1.
  6. Pastikan client Web dan Android berada dalam satu proyek Google Cloud yang sama.
  7. Jika consent screen dalam status Testing, pastikan akun Google tersebut adalah test user.
  8. Tunggu dan coba lagi setelah ada perubahan di console.

USER_CANCELLED setelah memilih akun pada debug build yang salah konfigurasi, masalahnya bisa tetap berupa mismatch SHA-1 atau client ID. Perbaiki dulu setup console di atas.

Debug atau build lokal:

Jendela terminal
cd android && ./gradlew signingReport

APK rilis yang ditandatangani:

Jendela terminal
keytool -printcert -jarfile android/app/release/app-release.apk

Tambahkan SHA-1 tersebut ke Android OAuth client dengan nama package yang sesuai, instal ulang signed APK yang sama, lalu uji kembali:

Jendela terminal
adb install android/app/release/app-release.apk

Tokens bersarang di bawah result:

const login = await SocialLogin.login({ provider: 'google' });
const idToken = login.result?.idToken;

Untuk Firebase Auth, buat kredensial dengan itu idToken dan gunakan Web client ID sebagai webClientId di initialize.

Jika Anda tidak bisa mendapatkan sertifikat SHA-1 development, coba gunakan custom keystore. Komentar issue ini menjelaskan cara menambahkan keystore ke proyek Anda.

Jika Anda menggunakan Google Login di Android untuk merencanakan alur autentikasi dan akun, hubungkan dengan Menggunakan @capgo/capacitor-social-login untuk kapabilitas native di Menggunakan @capgo/capacitor-social-login, @capgo/capacitor-social-login untuk detail implementasi di @capgo/capacitor-social-login, @capgo/capacitor-passkey untuk detail implementasi di @capgo/capacitor-passkey, @capgo/capacitor-native-biometric untuk detail implementasi di @capgo/capacitor-native-biometric, dan Autentikasi dua faktor untuk detail implementasi di autentikasi dua faktor.