Supabase Google Login di iOS
Copas prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Pendahuluan
Judul Bagian: “Pendahuluan”Panduan ini akan membantu Anda mengintegrasikan Sign-In Google dengan Supabase Authentication pada iOS. Diperkirakan bahwa Anda telah menyelesaikan:
Implementasi
Judul Bagian: “Implementasi”Implementasi lengkap tersedia dalam file aplikasi contoh. supabaseAuthUtils.ts Panduan ini menjelaskan konsep-konsep utama dan cara menggunakan aplikasi tersebut.
Menggunakan Bantuan Autentikasi
Judul Bagian “Menggunakan Bantuan Autentikasi”Bagian ini 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
Ketentuan PentingJudul Bagian “Ketentuan Penting”
Masalah Cache Token iOS dan NonceMasalah 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
- : Fungsi ini memeriksa apakah nonce di token sesuai dengan nonce yang diharapkanUlang Coba Otomatis
nonceDigest - : Jika validasi gagal, maka fungsi ini secara otomatis keluar dari Google dan mencoba sekali lagiPengelolaan Kesalahan
- : Jika ulang coba juga gagal, maka kesalahan akan dikembalikanMengapa hal ini terjadi
: Google Sign-In iOS __CAPGO_KEEP_0__ menyimpan token untuk meningkatkan kinerja. Ketika token yang disimpan dikembalikan, mungkin telah dibuat dengan nonce yang berbeda (atau tidak ada nonce), sehingga menyebabkan kesalahan: 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 untuk meningkatkan kinerja. Ketika token yang disimpan dikembalikan, mungkin telah dibuat dengan nonce yang berbeda (atau tidak ada nonce), sehingga menyebabkan kesalahan.: Implementasi ini secara otomatis mengatasi masalah ini dengan keluar dari akun dan mencoba lagi, sehingga Google akan menghasilkan token baru dengan nonce yang benar.
Solusi Manual (jika ulang coba otomatis tidak berhasil):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Hal ini memastikan token baru diperoleh dengan nonce yang benar.
Untuk referensi code yang lengkap, lihat bagian Referensi Code yang Lengkap dalam Panduan Pengaturan Umum.
Catatan Penting
Bab berjudul "Catatan Penting"Pengaturan Nonce
Bab berjudul "Pengaturan Nonce"Implementasi nonce mengikuti pola dari Documentasi Sign In Google React Native:
rawNonceberpindah ke Supabase’ssignInWithIdToken()- Supabase membuat hash dari
rawNoncedan membandingkannya dengannonceDigestyang termasuk dalam token ID dari Sign-In Google nonceDigest(hash SHA-256, hex-encoded) berpindah kenonceparameter dalam API Sign-In Google
Mekanisme Ulang Coba Otomatis
Bab berjudul “Mekanisme Ulang Coba Otomatis”Bagian 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
Pengaturan
Judul bagian ‘Pengaturan’Jika gagal autentikasi:
- Kesalahan 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 kedua Google Cloud Console dan Supabase (baik ID klien iOS maupun Web)
- Validasi token gagal: Pastikan Anda menggunakan
mode: 'online': Pastikan Anda menggunakan - konfigurasi Info.plist untuk mendapatkan idToken: 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 bagian “Teruskan dari Supabase Google Login pada iOS”
Jika Anda menggunakanSupabase Google Login pada iOS Pilih lanjutkan dari Supabase Google Login pada iOS untuk merencanakan autentikasi dan aliran 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.