Saltare al contenuto

Supabase Apple Login su Android

GitHub

Questa guida ti aiuterà a integrare Apple Sign-In con l'autenticazione Supabase su Android. Si presume che tu abbia già completato:

In primo luogo, dobbiamo distribuire la Funzione Edge Supabase che gestirà il callback OAuth Apple.

  1. Naviga nella directory del tuo progetto Supabase

    Finestra del terminale
    cd your-project/supabase
  2. Crea la funzione di edge (se non esiste)

    Finestra del terminale
    supabase functions new apple-signin-callback
  3. Copia la funzione di edge code

    La completa implementazione della funzione di edge è disponibile nell' esempio di applicazione.

    Copia i seguenti file nel tuo progetto:

    • supabase/functions/apple-signin-callback/index.ts - Funzione di edge principale code
    • supabase/functions/apple-signin-callback/deno.json - Mappa di importazione per le dipendenze (include jose libreria per la firma JWT)
  4. Configura la verifica JWT

    Il endpoint di callback OAuth di Apple deve essere pubblico (nessuna autenticazione richiesta) perché Apple lo reindirizzerà. Aggiorna il tuo supabase/config.toml file:

    [functions.apple-signin-callback]
    enabled = true
    verify_jwt = false # Important: Set to false for public OAuth callback
    import_map = "./functions/apple-signin-callback/deno.json"
    entrypoint = "./functions/apple-signin-callback/index.ts"
  5. Distribuisci la funzione

    Finestra del terminale
    supabase functions deploy apple-signin-callback
  6. Ottieni l'URL della tua funzione

    Dopo la distribuzione, otterrai un URL come:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    Se non riesci a trovarlo, puoi fare le seguenti cose:

    1. Apri https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. Clicca sul apple-signin-callback URL della funzione per copiarlo. Callback di accesso Apple di Supabase Functions

Passo 2: Configura il portale dello sviluppatore Apple

Sezione intitolata “Passo 2: Configura il portale dello sviluppatore Apple”

Ora abbiamo bisogno di configurare il portale dello sviluppatore Apple con l'URL del backend e ottenere tutti i valori richiesti.

  1. Segui la Guida di configurazione per Apple Login Android

    Completa il guida di configurazione per Apple Login Android a:

    • Crea un ID di Servizio
    • Genera una chiave privata (.p8 file)
    • Ottieni il tuo ID di Squadra e ID di Chiave
    • Configura l'URL di ritorno
  2. Imposta l'URL di ritorno nel Portale dello Sviluppatore Apple

    Quando si configura l'URL di ritorno nel Portale dello sviluppatore Apple (passo 6.9 della guida Apple), utilizza l'URL della tua Funzione Edge Supabase:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    Importante: utilizza l'URL della tua Funzione Edge Supabase

    Non utilizzare l'URL di reindirizzamento dal guida di configurazione Apple Login Android. Questa guida utilizza un URL di server backend personalizzato. Per l'integrazione di Supabase, dovrai utilizzare invece l'URL della tua Funzione Edge Supabase.

  3. Dopo aver completato la guida di configurazione Apple, dovresti avere:

    ID DEL TEAM DI APPLE

    • : Il tuo ID del team di sviluppatore Apple: L'ID della chiave da parte del portale dei sviluppatori Apple
    • : La tua chiave privata .p8 (che deve essere codificata in base64): Il tuo ID di servizio Apple (ad esempio,
    • APPLE_PRIVATE_KEY__CAPGO_KEEP_0__APPLE_KEY_ID__CAPGO_KEEP_0__
    • APPLE_TEAM_ID__CAPGO_KEEP_0__ANDROID_SERVICE_ID__CAPGO_KEEP_0__ com.example.app.service)
    • BASE_REDIRECT_URL: La tua URL di link profondo (ad esempio, capgo-demo-app://path)

Ora abbiamo bisogno di configurare le variabili di ambiente (secrets) per la Funzione Edge di Supabase.

  1. Codifica la tua chiave privata

    In primo luogo, codifica la tua chiave privata Apple (.p8 file) in base64:

    Finestra del terminale
    base64 -i AuthKey_XXXXX.p8

    Copia l'intero output (è una stringa lunga e singola).

  2. Imposta i segreti utilizzando Supabase CLI

    Finestra del terminale
    supabase secrets set APPLE_TEAM_ID=your_team_id
    supabase secrets set APPLE_KEY_ID=your_key_id
    supabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_key
    supabase secrets set ANDROID_SERVICE_ID=your.service.id
    supabase secrets set BASE_REDIRECT_URL=your-app://path
    supabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
  3. Alternativa: Imposta i segreti nel dashboard di Supabase

    Se preferisci utilizzare il dashboard:

    1. Vai al tuo dashboard del progetto Supabase
    2. Naviga a Funzioni di EdgeImpostazioniSegreti
    3. Aggiungi ogni variabile segreto con il suo valore

Ora puoi utilizzare l'helper di autenticazione nella tua app code.

La implementazione completa è disponibile nel file dell'applicazione di esempio. supabaseAuthUtils.ts Utilizzando l'helper di autenticazione

Sezione intitolata “Utilizzando l'helper di autenticazione”

Copia nel portapenne
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);
}

Sezione intitolata “Aggiorna la funzione helper”

Quando si utilizza la

funzione helper, è necessario authenticateWithAppleSupabase aggiornare i seguenti valori per farli corrispondere alla tua configurazione: __CAPGO_KEEP_0__ __CAPGO_KEEP_1__

  1. Aggiorna redirectUrl - Imposta su questo il tuo URL della funzione di Edge di Supabase:

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. Aggiorna clientId - Imposta su questo il tuo ID del servizio Apple:

    await SocialLogin.initialize({
    apple: {
    clientId: isIOS
    ? undefined // iOS uses bundle ID automatically
    : 'your.service.id.here', // Your Apple Service ID for Android
    redirectUrl: redirectUrl,
    },
    });

Vedi il implementazione completa per riferimento.

  1. Costruisci e esegui il tuo app Android

    Finestra del terminale
    npx cap sync android
    npx cap run android
  2. Testa il flusso di autenticazione

    • Clicca sul pulsante “Accedi con Apple”
    • Dovresti vedere la pagina OAuth di Apple in un browser
    • Dopo l'autenticazione, dovresti essere reindirizzato nuovamente alla tua app
    • Controlla i log del console per eventuali errori
  3. Verifica il flusso

    Il flusso completo dovrebbe essere:

    1. L'utente premendo su “Accedi con Apple”
    2. L'app apre il browser con OAuth Apple
    3. L'utente si autentica con Apple
    4. Apple reindirizza a: https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. La funzione Edge scambia code per token
    6. La funzione Edge reindirizza a: your-app://path?id_token=...&access_token=...
    7. L'app Android riceve il link profondo e elabora il token di identità
    8. L'app si connette a Supabase con il token di identità

If l'autenticazione fallisce:

  • URI di reindirizzamento non corrispondente: Verifica che l'URL di ritorno nel portale dello sviluppatore Apple corrisponda esattamente con APPLE_REDIRECT_URI segreto
  • La deep link non funziona: Assicurati che AndroidManifest.xml l'intent filter corrisponda a BASE_REDIRECT_URL
  • Segreti mancanti: Verifica che tutti i segreti siano impostati correttamente utilizzando supabase secrets list
  • L'intercambio di token fallisce: Controlla i log dell'edge function nel dashboard di Supabase per messaggi di errore dettagliati
  • L'app non riceve la callback: Assicurati che onNewIntent sia correttamente implementato in MainActivity
  • Recensisci il esempio di applicazione code per riferimento

Sul sistema Android, Apple Sign-In utilizza un flusso di reindirizzamento OAuth:

  1. Inizializzazione: Il plugin viene inizializzato con il tuo ID di servizio e l'URL di reindirizzamento del backend
  2. Flusso OAuth: Apre una finestra del browser/Tab personalizzato Chrome con la pagina OAuth di Apple
  3. Callback Backend: Apple reindirizza la tua Funzione Edge Supabase con un'autorizzazione code
  4. Scambio Token: La funzione edge scambia il code per token utilizzando il endpoint token di Apple
  5. Redirect a Profondità: La funzione edge reindirizza nuovamente alla tua app con il token di identità
  6. Autenticazione Supabase: L'app riceve il token e si connette a Supabase

Questa sequenza di passaggi è necessaria perché Apple non fornisce supporto nativo per Android per Sign in with Apple.

Continua da Supabase Apple Login on Android

Se stai utilizzando

If you are using Login con Apple su Android per pianificare l'autenticazione e i flussi di account, connettilo con Utilizzo di @capgo/capacitor-login-social per la capacità nativa in Utilizzo di @capgo/capacitor-login-social @capgo/capacitor-login-social per la dettaglio di implementazione in @capgo/capacitor-login-social @capgo/capacitor-passkey per la dettaglio di implementazione in @capgo/capacitor-passkey @capgo/capacitor-biometrica-nativa per la dettaglio di implementazione in @capgo/capacitor-biometrica-nativa, e Autenticazione a due fattori per la dettaglio di implementazione in Autenticazione a due fattori