Accesso Apple Supabase su Android
Prerequisiti
Section titled “Prerequisiti”Questa guida ti aiuterà a integrare Apple Sign-In con l’autenticazione Supabase su Android. Si presume che tu abbia già completato:
Passaggio 1: Distribuire la funzione edge del backend
Section titled “Passaggio 1: Distribuire la funzione edge del backend”Innanzitutto, devi distribuire la Supabase Edge Function che gestirà il callback OAuth di Apple.
-
Vai alla directory del tuo progetto Supabase
Terminal window cd your-project/supabase -
Crea la funzione edge (se non esiste già)
Terminal window supabase functions new apple-signin-callback -
Copia il codice della funzione edge
L’implementazione completa della funzione edge è disponibile nell’app di esempio.
Copia i seguenti file nel tuo progetto:
supabase/functions/apple-signin-callback/index.ts- Codice principale della funzione edgesupabase/functions/apple-signin-callback/deno.json- Mappa di importazione per le dipendenze (include la libreriajoseper la firma JWT)
-
Configura la verifica JWT
L’endpoint di callback OAuth di Apple deve essere pubblico (nessuna autenticazione richiesta) perché Apple reindirizza verso di esso. Aggiorna il file
supabase/config.toml:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Importante: Impostare su false per il callback OAuth pubblicoimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
Distribuisci la funzione
Terminal window supabase functions deploy apple-signin-callback -
Ottieni l’URL della tua funzione
Dopo la distribuzione, riceverai un URL come:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackSe non riesci a trovarlo, puoi fare quanto segue:
- Apri
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - Fai clic sull’URL della funzione
apple-signin-callbackper copiarlo.
- Apri
Passaggio 2: Configura il portale di Apple Developer
Section titled “Passaggio 2: Configura il portale di Apple Developer”Ora devi configurare il portale di Apple Developer con l’URL del backend e ottenere tutti i valori richiesti.
-
Segui la guida di configurazione Android Apple Login
Completa la guida di configurazione Android Apple Login per:
- Creare un ID servizio
- Generare una chiave privata (file .p8)
- Ottenere il tuo ID team e l’ID chiave
- Configurare l’URL di ritorno
-
Imposta l’URL di ritorno nel portale di Apple Developer
Quando configuri l’URL di ritorno nel portale di Apple Developer (passaggio 6.9 della guida Apple), utilizza l’URL della tua Supabase Edge Function:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackImportante: Utilizza l’URL della funzione edge di Supabase
NON utilizzare l’URL di reindirizzamento dalla guida di configurazione Android Apple Login. Quella guida utilizza un URL del server backend personalizzato. Per l’integrazione Supabase, devi utilizzare l’URL della tua Supabase Edge Function.
-
Raccogli tutti i valori richiesti
Dopo aver completato la guida di configurazione di Apple, dovresti avere:
- APPLE_TEAM_ID: Il tuo ID team di Apple Developer
- APPLE_KEY_ID: L’ID chiave dal portale di Apple Developer
- APPLE_PRIVATE_KEY: Il tuo file di chiave privata .p8 (deve essere codificato in base64)
- ANDROID_SERVICE_ID: Il tuo ID servizio Apple (ad es.
com.example.app.service) - BASE_REDIRECT_URL: L’URL del deep link (ad es.
capgo-demo-app://path)
Passaggio 3: Imposta i segreti di Supabase
Section titled “Passaggio 3: Imposta i segreti di Supabase”Ora devi configurare le variabili di ambiente (segreti) per la Supabase Edge Function.
-
Codifica la tua chiave privata
Innanzitutto, codifica la tua chiave privata Apple (file .p8) in base64:
Terminal window base64 -i AuthKey_XXXXX.p8Copia l’intero output (è una singola stringa lunga).
-
Imposta i segreti usando la CLI Supabase
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 -
Alternativa: Imposta i segreti nella dashboard Supabase
Se preferisci utilizzare la dashboard:
- Vai al tuo dashboard del progetto Supabase
- Vai a Edge Functions → Impostazioni → Segreti
- Aggiungi ogni variabile segreta con il suo valore
Passaggio 4: Usa l’helper di autenticazione
Section titled “Passaggio 4: Usa l’helper di autenticazione”Ora puoi utilizzare l’helper di autenticazione nel codice della tua app.
Implementazione
Section titled “Implementazione”L’implementazione completa è disponibile nel file supabaseAuthUtils.ts dell’app di esempio.
Utilizzo dell’helper di autenticazione
Section titled “Utilizzo dell’helper di autenticazione”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Accesso effettuato:', result.user); // Naviga verso la tua area autenticata} else { console.error('Errore:', result.error);}Aggiorna la funzione helper
Section titled “Aggiorna la funzione helper”Quando utilizzi la funzione helper authenticateWithAppleSupabase, devi aggiornare i seguenti valori in modo che corrispondano alla tua configurazione:
-
Aggiorna
redirectUrl- Impostalo sull’URL della tua Supabase Edge Function:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
Aggiorna
clientId- Impostalo sull’ID servizio Apple:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS utilizza automaticamente l'ID del bundle: 'your.service.id.here', // Il tuo ID servizio Apple per AndroidredirectUrl: redirectUrl,},});
Consulta l’implementazione completa come riferimento.
Passaggio 5: Prova l’integrazione
Section titled “Passaggio 5: Prova l’integrazione”-
Compila e esegui la tua app Android
Terminal window npx cap sync androidnpx cap run android -
Prova il flusso di autenticazione
- Tocca il pulsante “Accedi con Apple”
- Dovresti vedere la pagina OAuth di Apple in un browser
- Dopo l’autenticazione, dovresti essere reindirizzato alla tua app
- Controlla i registri della console per eventuali errori
-
Verifica il flusso
Il flusso completo dovrebbe essere:
- L’utente tocca “Accedi con Apple”
- L’app apre il browser con OAuth di Apple
- L’utente si autentica con Apple
- Apple reindirizza a:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - La funzione edge scambia il codice per i token
- La funzione edge reindirizza a:
your-app://path?id_token=...&access_token=... - L’app Android riceve il deep link e elabora il token di identità
- L’app accede a Supabase con il token di identità
Risoluzione dei problemi
Section titled “Risoluzione dei problemi”Se l’autenticazione non riesce:
- Mancata corrispondenza dell’URI di reindirizzamento: Verifica che l’URL di ritorno nel portale di Apple Developer corrisponda esattamente con il segreto
APPLE_REDIRECT_URI - Deep link non funzionante: Controlla che il filtro di intent in
AndroidManifest.xmlcorrisponda al tuoBASE_REDIRECT_URL - Segreti mancanti: Verifica che tutti i segreti siano impostati correttamente utilizzando
supabase secrets list - Scambio di token non riuscito: Controlla i registri della funzione edge nella dashboard di Supabase per messaggi di errore dettagliati
- L’app non riceve il callback: Assicurati che
onNewIntentsia implementato correttamente in MainActivity - Consulta il codice dell’app di esempio come riferimento
Come funziona
Section titled “Come funziona”Su Android, Apple Sign-In utilizza un flusso di reindirizzamento OAuth:
- Inizializzazione: Il plugin viene inizializzato con il tuo ID servizio e l’URL di reindirizzamento del backend
- Flusso OAuth: Apre un browser/Chrome Custom Tab con la pagina OAuth di Apple
- Callback del backend: Apple reindirizza a una Supabase Edge Function con un codice di autorizzazione
- Scambio di token: La funzione edge scambia il codice per i token utilizzando l’endpoint del token di Apple
- Reindirizzamento del deep link: La funzione edge reindirizza verso la tua app con il token di identità
- Autenticazione Supabase: L’app riceve il token e accede a Supabase
Questo flusso è necessario perché Apple non fornisce supporto nativo per Sign in with Apple su Android.