Lompat ke konten

Supabase Google Login di iOS

GitHub

Petunjuk ini akan membantu Anda mengintegrasikan Sign-In Google dengan Supabase Authentication pada iOS. Diperkirakan bahwa Anda telah menyelesaikan:

Implementasi lengkap tersedia dalam file aplikasi contoh. supabaseAuthUtils.ts Petunjuk ini menjelaskan konsep utama dan cara menggunakan fitur tersebut.

Yaitu authenticateWithGoogleSupabase fungsi ini mengelola seluruh alur autentikasi:

import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();
if (result.success) {
console.log('Signed in:', result.user);
// Navigate to your authenticated area
} else {
console.error('Error:', result.error);
}

Judul Bagian “Bagaimana Cara Kerjanya” Untuk penjelasan rinci tentang bagaimana alur autentikasi bekerja, termasuk penghasilan nonce, validasi JWT, dan masuk ke Supabase, lihat bagian ‘Bagaimana Cara Kerjanya’ di panduan pengaturan umum.

Masalah Penyimpanan Nonce iOS

Pada iOS, Google Sign-In dapat menyimpan token, yang mungkin menyebabkan validasi nonce gagal. Fungsi ini mendeteksi hal ini dan secara otomatis mengatasi masalahnya: validateJWTToken Deteksi Otomatis

  1. : Fungsi ini memeriksa apakah nonce di token sesuai dengan nonce yang diharapkanRetry Otomatis nonceDigest
  2. : Jika validasi gagal, fungsi ini secara otomatis keluar dari Google dan mencoba sekali lagiPengelolaan Kesalahan
  3. : Jika retry juga gagal, kesalahan akan dikembalikanMengapa hal ini terjadi

: Google Sign-In iOS __CAPGO_KEEP_0__ menyimpan token untuk meningkatkan kinerja. Ketika token yang disimpan dikembalikan, mungkin sudah dibuat dengan nonce yang berbeda (atau tidak ada nonce), sehingga menyebabkan kesalahan nonce: iOS Google Sign-In SDK caches tokens for performance. When a cached token is returned, it may have been generated with a different nonce (or no nonce), causing a mismatch.

Pada iOS, Google Sign-In dapat menyimpan token, yang mungkin menyebabkan validasi nonce gagal. Fungsi ini mendeteksi hal ini dan secara otomatis mengatasi masalahnya:: Implementasi ini secara otomatis menghandle hal ini dengan keluar dan mencoba lagi, yang memaksa Google untuk menghasilkan token segar dengan nonce yang benar.

Solusi Manual (jika ulang coba otomatis tidak berhasil):

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

Hal ini memastikan token segar diperoleh dengan nonce yang benar.

Untuk referensi code yang lengkap, lihat bagian Referensi Code Lengkap.

Implementasi nonce mengikuti pola dari Dokumentasi Sign In Google Native React:

  • rawNonce berpindah ke Supabase’s signInWithIdToken()
  • Supabase membuat hash dari rawNonce dan membandingkannya dengan nonceDigest yang termasuk dalam token ID dari Sign-In Google
  • nonceDigest (hash SHA-256, hex-encoded) berpindah ke nonce parameter dalam API Sign-In Google

Fitur authenticateWithGoogleSupabase fungsi ini termasuk retry parameter:

  • Panggilan Pertama (retry=falseJika validasi gagal, keluar otomatis dan mencoba sekali lagi
  • Panggilan Ulang (retry=trueJika validasi gagal lagi, langsung kembali error

Ini secara otomatis mengatasi masalah caching token iOS

Jika autentikasi gagal:

  • Perbedaan Nonce: Fungsi ini secara otomatis mencoba ulang - periksa log konsol untuk detail. Jika tetap berlanjut, keluar manual terlebih dahulu
  • Audien Tidak Valid: Pastikan ID Klien Google Anda sesuai di baik Google Cloud Console dan Supabase (baik ID klien iOS dan Web)
  • Validasi token gagal: Pastikan Anda menggunakan mode: 'online' di panggilan inisialisasi untuk mendapatkan idToken
  • Konfigurasi Info.plist: Pastikan Info.plist memiliki URL schemes dan GIDClientID yang benar
  • Periksa contoh aplikasi __CAPGO_KEEP_0__ example app code Teruskan dari Supabase Google Login pada iOS

Judul: Teruskan dari Supabase Google Login pada iOS

Jika Anda menggunakan

Supabase Google Login pada iOS Supabase Google Login on iOS untuk merencanakan autentikasi dan alur akun, hubungkannya dengan Menggunakan @capgo/capacitor-social-login untuk kemampuan asli 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.