Langsung ke konten

Google Login di iOS

GitHub

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

Di bagian ini, Anda akan belajar cara setup Google login di iOS.

  1. Buat iOS client ID di Google console

    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 Application type ke iOS

      Pilihan tipe aplikasi dengan opsi iOS yang disorot
    6. Cari bundle ID

      1. Buka Xcode

      2. Klik dua kali pada App

        Target App di project navigator Xcode
      3. Pastikan Anda berada di Targets -> App

        Bagian Targets di Xcode dengan App terpilih
      4. Cari Bundle Identifier

        Field Bundle Identifier di pengaturan project Xcode
      5. Kembali ke Google Console dan tempelkan Bundle Identifier ke Bundle ID

        Field Bundle ID di form pembuatan iOS client Google Console
    7. Opsional, tambahkan App Store ID atau Team ID ke client ID jika Anda sudah merilis aplikasi ke App Store

    8. Setelah mengisi semua detail, klik create

      tombol Create di bagian bawah form pembuatan iOS client
    9. Klik OK

      tombol OK pada dialog konfirmasi client ID yang berhasil dibuat
    10. Buka iOS client yang baru dibuat

      iOS client yang baru dibuat di daftar kredensial
    11. Salin data berikut

      Detail Client ID yang menampilkan Client ID dan reversed client ID untuk disalin
  2. Ubah Info.plist aplikasi Anda

    1. Buka Xcode dan cari Info.plist file

      file Info.plist di Xcode project navigator
    2. Klik kanan file ini dan buka sebagai source code

      Menu klik kanan yang menampilkan opsi Open As Source Code
    3. Di bagian bawah Plist file, Anda akan melihat </dict> tag

      Tag penutup dict di file Info.plist
    4. Masukkan fragmen berikut tepat sebelum tag penutup </dict> tag

      Info.plist dengan URL schemes code yang disisipkan sebelum tag penutup dict
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Ubah YOUR_DOT_REVERSED_IOS_CLIENT_ID ke nilai yang disalin pada langkah sebelumnya

      Info.plist dengan reversed client ID sebenarnya yang dimasukkan ke URL schemes
    6. Simpan file dengan Command + S

  3. Ubah AppDelegate.swift

    1. Buka AppDelegate

      File AppDelegate.swift di project navigator Xcode
    2. Sisipkan import GoogleSignIn di bagian atas file

      AppDelegate.swift dengan tambahan import GoogleSignIn
    3. Temukan func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) fungsi

      Fungsi application openURL asli di AppDelegate
    4. Ubah fungsi menjadi seperti ini

      func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
      // Called when the app was launched with a url. Feel free to add additional processing here,
      // but if you want the App API to support tracking app url opens, make sure to keep this call
      var handled: Bool
      handled = GIDSignIn.sharedInstance.handle(url)
      if handled {
      return true
      }
      return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
      }
      Fungsi application openURL yang telah dimodifikasi dengan penanganan GoogleSignIn
    5. Simpan file dengan Command + S

  4. Setup login Google di code JavaScript/TypeScript Anda

    1. Impor SocialLogin dan Capacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. Panggil method initialize (cukup panggil satu kali saja)

      Setup dasar (mode online - direkomendasikan untuk sebagian besar aplikasi):

      // onMounted is Vue specific
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      iOSClientId: '673324426943-redacted.apps.googleusercontent.com',
      mode: 'online' // Default mode
      }
      })
      })

      Setup lanjutan dengan tambahan client ID:

      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: 'YOUR_WEB_CLIENT_ID', // Optional: for web platform support
      iOSClientId: 'YOUR_IOS_CLIENT_ID', // Required: from step 1
      iOSServerClientId: 'YOUR_WEB_CLIENT_ID', // Optional: same as webClientId, needed for some advanced features
      mode: 'online' // 'online' or 'offline'
      }
      })
      })
    3. Implementasikan fungsi login. Buat tombol dan jalankan code berikut saat diklik

      Untuk mode online:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response - contains user data
      console.log(JSON.stringify(res))

      Untuk mode offline:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {
      forceRefreshToken: true // Recommended for offline mode
      }
      })
      // res contains serverAuthCode, not user data
      // Send serverAuthCode to your backend to get user information
      // Do not call SocialLogin.refresh() in offline mode
      console.log('Server auth code:', res.result.serverAuthCode)
  5. Tes aplikasi Anda

    1. Build dan jalankan aplikasi Anda cap sync

    2. Jika semua sudah benar, alur login Google seharusnya berjalan dengan lancar

      Demo alur login Google di iOS yang menunjukkan proses sign-in dan autentikasi berhasil

Plugin Google Login tidak kompatibel dengan @capacitor/privacy-screen. Saat menggunakan kedua plugin bersamaan, webview Google Login akan terganggu oleh Privacy Screen.

Solusi: Panggil await PrivacyScreen.disable(); sebelum memanggil fungsi login:

import { PrivacyScreen } from '@capacitor/privacy-screen';
import { SocialLogin } from '@capgo/capacitor-social-login';
await PrivacyScreen.disable();
await SocialLogin.login({
provider: 'google',
options: {}
});

Jika Anda menggunakan Google Login di iOS 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.