Lompat ke konten

Login Google Supabase pada iOS

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

Implementasi lengkap tersedia di

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__ contoh aplikasi’s supabaseAuthUtils.ts file. Panduan ini menjelaskan konsep-konsep utama dan cara menggunakan aplikasi 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 penggunaan nonce, validasi JWT, dan sign-in Supabase, lihat bagian Bagaimana Cara Kerjanya di Panduan Pengaturan Umum.

Masalah Cache Token iOS dan Nonce

Bagian yang Penting untuk Diperhatikan

Masalah Cache 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 cocok dengan nonce yang diharapkanUlang Coba Otomatis nonceDigest
  2. : Jika validasi gagal, maka fungsi ini secara otomatis keluar dari Google dan mencoba ulang sekaliPengelolaan Kesalahan
  3. : Jika ulang coba juga gagal, maka fungsi ini akan mengembalikan kesalahanAutomatic Detection

Mengapa 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.

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

Kerja Sampingan Manual (jika ulangan otomatis tidak berhasil):

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

Hal ini memastikan token yang segar diperoleh dengan nonce yang benar.

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

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

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

Fungsi ini termasuk parameter: authenticateWithGoogleSupabase Panggilan pertama ( retry ): Jika validasi gagal, keluar otomatis dan mencoba sekali lagi

  • Panggilan ulang (retry=false): Jika validasi gagal lagi, langsung kembali dengan kesalahan
  • Fungsi ini secara otomatis mengatasi masalah caching token iOS.retry=truePengaturan

Bagian berjudul “Pengaturan”

Jika autentikasi gagal:

Perbedaan nonce

__CAPGO_KEEP_0__

  • __CAPGO_KEEP_0__: Fungsi ini secara otomatis mencoba ulang - periksa log konsol untuk detail. Jika masalah persist, keluar terlebih dahulu secara manual
  • 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' inisialisasi untuk mendapatkan idToken
  • Konfigurasi Info.plist: Pastikan Info.plist memiliki URL scheme yang benar dan GIDClientID
  • Review aplikasi contoh __CAPGO_KEEP_0__ example app code Halaman Edit