Lebih lanjut

Teruskan dari Login Google Supabase di iOS

GitHub

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

The complete implementation is available in the file aplikasi contoh. supabaseAuthUtils.ts file. Panduan ini menjelaskan konsep utama dan cara menggunakan fitur ini.

The 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);
}

Untuk penjelasan rinci tentang bagaimana alur autentikasi bekerja, termasuk penghasilan nonce, validasi JWT, dan masuk ke Supabase, lihat bagian Cara Kerjanya di Panduan Pengaturan Umum.

Masalah Cache Nonce iOS

Pada iOS, Google Sign-In dapat menyimpan token, yang mungkin menyebabkan nonce validasi gagal. validateJWTToken fungsi ini mendeteksi hal ini dan secara otomatis mengaturnya

  1. Deteksi OtomatisFungsi ini memeriksa apakah nonce di token sesuai dengan yang diharapkan. nonceDigest
  2. Retry Otomatis: Jika validasi gagal, maka otomatis keluar dari Google dan mencoba sekali lagi
  3. Pengelolaan Kesalahan: Jika usaha ulang juga gagal, maka kesalahan dikembalikan

Mengapa hal ini terjadi: iOS Google Sign-In SDK menyimpan token untuk meningkatkan kinerja. Ketika token yang disimpan dikembalikan, mungkin telah dibuat dengan nonce yang berbeda (atau tidak ada nonce), sehingga menyebabkan kesalahan.

Pengaturan Solusi: Implementasi ini secara otomatis mengatasi hal ini dengan keluar dan mencoba ulang, yang memaksa Google untuk menghasilkan token segar dengan nonce yang benar.

Kerja Sampingan Tangan : (jika retry otomatis tidak berhasil):

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

: Ini memastikan token segar diperoleh dengan nonce yang benar.

Untuk referensi code yang lengkap, lihat bagian Referensi Code Lengkap dalam Panduan Pengaturan Umum.

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

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

The authenticateWithGoogleSupabase fungsi termasuk retry parameter:

  • Pertama kaliretry=false): Jika validasi gagal, secara otomatis keluar dan mencoba sekali lagi
  • Panggilan ulang (retry=true): Jika validasi gagal lagi, langsung kembali dengan kesalahan

Ini secara otomatis mengatasi masalah caching token iOS.

Jika autentikasi gagal:

  • Nonce tidak cocok: Fungsi ini secara otomatis mencoba lagi - periksa log konsol untuk detail. Jika masalah persist, keluar secara manual terlebih dahulu
  • Audien tidak valid: Pastikan ID Klien Google Anda sesuai di kedua Google Cloud Console dan Supabase (kedua ID Klien iOS dan Web)
  • Validasi token gagal: Pastikan Anda menggunakan mode: 'online' di panggilan inisialisasi untuk mendapatkan idToken
  • Pengaturan Info.plist: Pastikan Info.plist memiliki URL scheme dan GIDClientID yang benar
  • Periksa example app code untuk referensi

Judul bagian “Teruskan dari Supabase Google Login pada iOS”

Bagian berjudul “Teruskan dari Login Google Supabase di iOS”

Supabase Google Login pada iOS untuk merencanakan autentikasi dan alur akun, hubungkannya dengan hubungkan dengan untuk merencanakan autentikasi dan aliran akun Menggunakan @capgo/capacitor-login Sosial Untuk kemampuan native di dalam Menggunakan @capgo/capacitor-social-login, @capgo/capacitor-login Sosial Untuk detail implementasi di @capgo/capacitor-social-login, di @capgo/capacitor-passkey untuk detail implementasi di @capgo/capacitor-passkey, di @capgo/capacitor-native-biometric untuk detail implementasi di @capgo/capacitor-native-biometric, dan Dua faktor autentikasi untuk detail implementasi di Dua faktor autentikasi.