Supabase Apple Login su Android
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Prerequisiti
Sezione intitolata “Prerequisiti”Questa guida ti aiuterà a integrare Apple Sign-In con Supabase Authentication su Android. Si assume che tu abbia già completato:
Passo 1: Deploy della Backend Edge Function
Sezione intitolata “Passo 1: Deploy della Backend Edge Function”Per prima cosa, dobbiamo fare il deploy della Supabase Edge Function che gestirà la callback OAuth di Apple.
-
Vai alla directory del tuo progetto Supabase
Finestra del terminale cd your-project/supabase -
Crea l'edge function (se non esiste)
Finestra del terminale supabase functions new apple-signin-callback -
Copia l'edge function code
L'implementazione completa dell'edge function è disponibile nell' app di esempio.
Copia i seguenti file nel tuo progetto:
supabase/functions/apple-signin-callback/index.ts- Edge function principale codesupabase/functions/apple-signin-callback/deno.json- Import map per le dipendenze (include lajoselibreria per la firma JWT)
-
Configura la verifica JWT
L'endpoint di callback OAuth di Apple deve essere pubblico (senza autenticazione) perché Apple vi reindirizzerà. Aggiorna il tuo
supabase/config.tomldell'app:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Important: Set to false for public OAuth callbackimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
Deploy della funzione
Finestra del terminale supabase functions deploy apple-signin-callback -
Ottieni l'URL della funzione
Dopo il deploy, riceverai un URL come:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackSe non riesci a trovarlo, puoi procedere così:
- Apri
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - Clicca sul
apple-signin-callbackCopia l'URL tramite questa funzione.
- Apri
Passaggio 2: Configura l'Apple Developer Portal
Sezione intitolata “Step 2: Configure Apple Developer Portal”Ora dobbiamo configurare l'Apple Developer Portal con l'URL del backend e ottenere tutti i valori necessari.
-
Segui la guida alla configurazione di Apple Login per Android
Completa la guida Apple Login Android Setup a:
- Crea un Service ID
- Genera una chiave privata (file .p8)
- Recupera il tuo Team ID e Key ID
- Configura la Return URL
-
Imposta la Return URL nell'Apple Developer Portal
Quando configuri la Return URL nell'Apple Developer Portal (passaggio 6.9 della guida Apple), usa l'URL della tua Supabase Edge Function:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackImportante: usa l'URL della Supabase Edge Function
NON usare l'URL di redirect della guida Apple Login Android Setup. Quella guida usa un URL di server backend custom. Per l'integrazione con Supabase, devi usare invece l'URL della tua Supabase Edge Function.
-
Raccogli tutti i valori necessari
Dopo aver completato la guida alla configurazione di Apple, dovresti avere:
- APPLE_TEAM_ID: Il tuo Apple Developer Team ID
- APPLE_KEY_ID: Il Key ID dal portale Apple Developer
- APPLE_PRIVATE_KEY: Il tuo file della chiave privata .p8 (deve essere codificato in base64)
- ANDROID_SERVICE_ID: Il tuo Apple Service ID (es.
com.example.app.service) - BASE_REDIRECT_URL: Il tuo URL di deep link (es.
capgo-demo-app://path)
Passaggio 3: Imposta i Secret di Supabase
Sezione intitolata “Step 3: Set Supabase Secrets”Ora dobbiamo configurare le variabili d'ambiente (secrets) per la Supabase Edge Function.
-
Codifica la tua chiave privata
Per prima cosa, codifica la chiave privata Apple (file .p8) in base64:
Finestra del terminale base64 -i AuthKey_XXXXX.p8Copia l'intero output (è una stringa singola molto lunga).
-
Imposta i secret usando CLI di Supabase
Finestra del terminale 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 -
Alternativa: Imposta i secret nella Supabase Dashboard
Se preferisci usare la dashboard:
- Vai alla dashboard del tuo progetto Supabase
- Naviga in Edge Functions → Impostazioni → Secrets
- Aggiungi ogni variabile secret con il suo valore
Passaggio 4: Usa l'Authentication Helper
Sezione intitolata “Step 4: Use the Authentication Helper”Ora puoi usare l'authentication helper nella tua app code.
Implementazione
Sezione intitolata “Implementazione”L'implementazione completa è disponibile in dell'app di esempio supabaseAuthUtils.ts file.
Utilizzo dell'Authentication Helper
Sezione intitolata “Uso dell'Authentication Helper”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}Aggiorna la funzione Helper
Sezione intitolata “Aggiorna la Helper Function”Quando utilizzi la authenticateWithAppleSupabase helper function, devi devi aggiorna i seguenti valori in base alla tua configurazione:
-
Aggiornamento
redirectUrl- Imposta questo valore con l'URL della tua Supabase Edge Function:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
Aggiornamento
clientId- Imposta questo valore con il tuo Apple Service ID:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
Guarda il implementazione completa come riferimento.
Passaggio 5: Testa l'integrazione
Sezione: “Passaggio 5: Testa l'integrazione”-
Build e avvio dell'app Android
Finestra del terminale npx cap sync androidnpx cap run android -
Test del flusso di autenticazione
- Tocca il pulsante “Sign in with Apple”
- Dovresti vedere la pagina OAuth di Apple nel browser
- Dopo l'autenticazione, verrai reindirizzato alla tua app
- Controlla i log della console per eventuali errori
-
Verifica il flusso
Il flusso completo dovrebbe essere:
- L'utente tocca “Sign in with Apple”
- L'app apre il browser con Apple OAuth
- L'utente si autentica con Apple
- Apple reindirizza a:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - L'Edge function scambia code con i token
- L'Edge function reindirizza a:
your-app://path?id_token=...&access_token=... - L'app Android riceve il deep link e processa l'identity token
- L'app effettua il login su Supabase con l'identity token
Risoluzione problemi
Sezione intitolata “Troubleshooting”Se l'autenticazione fallisce:
- Mismatch dell'URI di redirect: Verifica che la Return URL nel portale Apple Developer corrisponda esattamente a
APPLE_REDIRECT_URIsecret - Deep link non funzionante: Controlla che
AndroidManifest.xmll'intent filter corrisponda al tuoBASE_REDIRECT_URL - Secret mancanti: Verifica che tutti i secret siano impostati correttamente usando
supabase secrets list - Token exchange fallitoControlla i log delle edge function nel dashboard di Supabase per messaggi di errore dettagliati
- L'app non riceve il callback: Assicurati che
onNewIntentsia implementato correttamente in MainActivity - Consulta l' app di esempio code come riferimento
Come funziona
Sezione intitolata “Come funziona”Su Android, Apple Sign-In utilizza un flusso di redirect OAuth:
- Inizializzazione: Il plugin viene inizializzato con il tuo Service ID e l'URL di redirect del backend
- Flusso OAuth: Apre un browser/Chrome Custom Tab sulla pagina OAuth di Apple
- Callback del Backend: Apple reindirizza alla tua Supabase Edge Function con un code di autorizzazione
- Scambio del token: l'edge function scambia il code per ottenere i token tramite l'endpoint token di Apple
- Redirect tramite Deep Link: l'edge function reindirizza alla tua app con l'identity token
- Autenticazione Supabase: l'app riceve il token ed effettua il login su Supabase
Questo flusso è necessario perché Apple non offre il supporto nativo per Sign in with Apple su Android.
Continua con Supabase Apple Login su Android
Sezione intitolata “Continua con Supabase Apple Login su Android”Se stai usando Supabase Apple Login su Android per pianificare i flussi di autenticazione e account, collegandolo a Utilizzo di @capgo/capacitor-social-login per la funzionalità nativa in Utilizzo di @capgo/capacitor-social-login, @capgo/capacitor-social-login per i dettagli di implementazione in @capgo/capacitor-social-login, @capgo/capacitor-passkey per i dettagli di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric per i dettagli di implementazione in @capgo/capacitor-native-biometric, e Autenticazione a due fattori per i dettagli sull'implementazione dell'autenticazione a due fattori.