Supabase Apple Login di Android
Prasyarat
Section titled “Prasyarat”Panduan ini akan membantu Anda mengintegrasikan Apple Sign-In dengan Supabase Authentication di Android. Diasumsikan Anda telah menyelesaikan:
Langkah 1: Terapkan Edge Function Backend
Section titled “Langkah 1: Terapkan Edge Function Backend”Pertama, kami perlu menerapkan Supabase Edge Function yang akan menangani callback OAuth Apple.
-
Navigasi ke direktori proyek Supabase Anda
Terminal window cd your-project/supabase -
Buat edge function (jika tidak ada)
Terminal window supabase functions new apple-signin-callback -
Salin kode edge function
Implementasi edge function lengkap tersedia di aplikasi contoh.
Salin file berikut ke proyek Anda:
supabase/functions/apple-signin-callback/index.ts- Kode edge function utamasupabase/functions/apple-signin-callback/deno.json- Peta impor untuk dependensi (termasuk libraryjoseuntuk penandatanganan JWT)
-
Konfigurasikan verifikasi JWT
Endpoint callback OAuth Apple harus bersifat publik (tidak memerlukan autentikasi) karena Apple akan mengalihkan ke sana. Perbarui file
supabase/config.tomlAnda:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Penting: Atur ke false untuk callback OAuth publikimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
Terapkan fungsi
Terminal window supabase functions deploy apple-signin-callback -
Dapatkan URL fungsi Anda
Setelah penerapan, Anda akan mendapatkan URL seperti:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackJika Anda tidak dapat menemukannya, Anda dapat melakukan berikut:
- Buka
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - Klik pada URL fungsi
apple-signin-callbackuntuk menyalinnya.
- Buka
Langkah 2: Konfigurasikan Apple Developer Portal
Section titled “Langkah 2: Konfigurasikan Apple Developer Portal”Sekarang kami perlu mengonfigurasi Apple Developer Portal dengan URL backend dan mendapatkan semua nilai yang diperlukan.
-
Ikuti Panduan Pengaturan Apple Login Android
Lengkapi panduan pengaturan Android Apple Login untuk:
- Membuat Service ID
- Menghasilkan private key (.p8 file)
- Dapatkan Team ID dan Key ID Anda
- Konfigurasi Return URL
-
Atur Return URL di Apple Developer Portal
Saat mengonfigurasi Return URL di Apple Developer Portal (langkah 6.9 dari panduan Apple), gunakan URL Supabase Edge Function Anda:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackPenting: Gunakan URL Supabase Edge Function
JANGAN gunakan redirect URL dari panduan pengaturan Android Apple Login. Panduan itu menggunakan URL server backend kustom. Untuk integrasi Supabase, Anda harus menggunakan URL Supabase Edge Function Anda sebagai gantinya.
-
Kumpulkan semua nilai yang diperlukan
Setelah menyelesaikan panduan pengaturan Apple, Anda harus memiliki:
- APPLE_TEAM_ID: ID Tim Apple Developer Anda
- APPLE_KEY_ID: Key ID dari Apple Developer Portal
- APPLE_PRIVATE_KEY: File private key .p8 Anda (perlu dikodekan base64)
- ANDROID_SERVICE_ID: ID Layanan Apple Anda (misalnya,
com.example.app.service) - BASE_REDIRECT_URL: URL deep link Anda (misalnya,
capgo-demo-app://path)
Langkah 3: Atur Rahasia Supabase
Section titled “Langkah 3: Atur Rahasia Supabase”Sekarang kami perlu mengonfigurasi variabel lingkungan (rahasia) untuk Supabase Edge Function.
-
Kodekan private key Anda
Pertama, kodekan Apple private key (.p8 file) Anda ke base64:
Terminal window base64 -i AuthKey_XXXXX.p8Salin seluruh output (ini adalah satu string panjang).
-
Atur rahasia menggunakan Supabase CLI
Terminal window supabase secrets set APPLE_TEAM_ID=your_team_idsupabase secrets set APPLE_KEY_ID=your_key_idsupabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_keysupabase secrets set ANDROID_SERVICE_ID=your.service.idsupabase secrets set BASE_REDIRECT_URL=your-app://pathsupabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback -
Alternatif: Atur rahasia di Dasbor Supabase
Jika Anda lebih suka menggunakan dasbor:
- Buka dasbor proyek Supabase Anda
- Navigasi ke Edge Functions → Settings → Secrets
- Tambahkan setiap variabel rahasia dengan nilainya
Langkah 4: Gunakan Authentication Helper
Section titled “Langkah 4: Gunakan Authentication Helper”Sekarang Anda dapat menggunakan authentication helper di kode aplikasi Anda.
Implementasi
Section titled “Implementasi”Implementasi lengkap tersedia di file supabaseAuthUtils.ts aplikasi contoh.
Menggunakan Authentication Helper
Section titled “Menggunakan Authentication Helper”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Masuk:', result.user); // Navigasi ke area yang sudah diautentikasi} else { console.error('Kesalahan:', result.error);}Perbarui Fungsi Helper
Section titled “Perbarui Fungsi Helper”Saat menggunakan fungsi helper authenticateWithAppleSupabase, Anda harus memperbarui nilai berikut agar sesuai dengan konfigurasi Anda:
-
Perbarui
redirectUrl- Atur ini ke URL Supabase Edge Function Anda:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
Perbarui
clientId- Atur ini ke ID Layanan Apple Anda:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS menggunakan bundle ID secara otomatis: 'your.service.id.here', // ID Layanan Apple Anda untuk AndroidredirectUrl: redirectUrl,},});
Lihat implementasi lengkap untuk referensi.
Langkah 5: Uji Integrasi
Section titled “Langkah 5: Uji Integrasi”-
Bangun dan jalankan aplikasi Android Anda
Terminal window npx cap sync androidnpx cap run android -
Uji alur autentikasi
- Ketuk tombol “Sign in with Apple”
- Anda harus melihat halaman OAuth Apple di browser
- Setelah mengautentikasi, Anda harus dialihkan kembali ke aplikasi Anda
- Periksa log konsol untuk kesalahan apa pun
-
Verifikasi alur
Alur lengkap seharusnya:
- Pengguna mengetuk “Sign in with Apple”
- Aplikasi membuka browser dengan OAuth Apple
- Pengguna mengautentikasi dengan Apple
- Apple mengalihkan ke:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - Edge function menukarkan kode untuk token
- Edge function mengalihkan ke:
your-app://path?id_token=...&access_token=... - Aplikasi Android menerima deep link dan memproses identity token
- Aplikasi masuk ke Supabase dengan identity token
Pemecahan Masalah
Section titled “Pemecahan Masalah”Jika autentikasi gagal:
- Ketidakcocokan Redirect URI: Verifikasi Return URL di Apple Developer Portal cocok persis dengan rahasia
APPLE_REDIRECT_URI - Deep link tidak berfungsi: Periksa bahwa filter intent
AndroidManifest.xmlcocok denganBASE_REDIRECT_URLAnda - Rahasia tidak ada: Verifikasi semua rahasia telah ditetapkan dengan benar menggunakan
supabase secrets list - Pertukaran token gagal: Periksa log edge function di Dasbor Supabase untuk pesan kesalahan terperinci
- Aplikasi tidak menerima callback: Pastikan
onNewIntentditerapkan dengan benar di MainActivity - Tinjau kode aplikasi contoh untuk referensi
Cara Kerjanya
Section titled “Cara Kerjanya”Di Android, Apple Sign-In menggunakan alur redirect OAuth:
- Inisialisasi: Plugin diinisialisasi dengan ID Layanan Anda dan URL redirect backend
- Alur OAuth: Membuka browser/Chrome Custom Tab dengan halaman OAuth Apple
- Callback Backend: Apple mengalihkan ke Supabase Edge Function Anda dengan kode otorisasi
- Pertukaran Token: Edge function menukarkan kode untuk token menggunakan endpoint token Apple
- Redirect Deep Link: Edge function mengalihkan kembali ke aplikasi Anda dengan identity token
- Supabase Authentication: Aplikasi menerima token dan masuk ke Supabase
Alur ini diperlukan karena Apple tidak menyediakan dukungan native Android untuk Sign in with Apple.