Aller directement au contenu

Supabase Apple Login sur Android

GitHub

This guide will help you integrate Apple Sign-In with Supabase Authentication on Android. It is assumed that you have already completed:

Tout d'abord, nous devons déployer la fonction Edge Supabase qui gérera l'appel de rappel Apple OAuth.

  1. Naviguez jusqu'à votre répertoire de projet Supabase

    Fenêtre de terminal
    cd your-project/supabase
  2. Créez la fonction de bordure (si elle n'existe pas)

    Fenêtre de terminal
    supabase functions new apple-signin-callback
  3. Copiez la fonction de bordure code

    La mise en œuvre complète de la fonction de bordure est disponible dans l' application d'exemple.

    Copiez les fichiers suivants dans votre projet :

    • supabase/functions/apple-signin-callback/index.ts - Fonction de bordure principale code
    • supabase/functions/apple-signin-callback/deno.json - Carte d'importation pour les dépendances (inclut jose bibliothèque pour la signature JWT)
  4. Configurez la vérification JWT

    Le point de terminaison de rappel OAuth d'Apple doit être public (aucune authentication requise) car Apple le redirigera vers lui. Mettez à jour votre 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. Déployez la fonction

    Fenêtre de terminal
    supabase functions deploy apple-signin-callback
  6. Obtenez l'URL de votre fonction

    Après le déploiement, vous obtiendrez une URL comme :

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

    Si vous ne pouvez pas le trouver, vous pouvez faire les choses suivantes :

    1. Ouvrir https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. Cliquez sur le apple-signin-callback URL de la fonction pour le copier. Supabase Functions Apple Sign-In Callback

Étape 2 : Configurer le Portail des développeurs Apple

Section intitulée « Étape 2 : Configurer le Portail des développeurs Apple »

Nous devons maintenant configurer le Portail des développeurs Apple avec l'URL du backend et récupérer toutes les valeurs requises.

  1. Suivez le guide de configuration d'Apple Login pour Android

    Terminez le guide de configuration d'Apple Login pour Android à :

    • Créer un ID de service
    • Générez une clé privée (.p8 fichier)
    • Obtenez votre ID d'équipe et votre ID de clé
    • Configurez l'URL de retour
  2. Définissez l'URL de retour dans le Portail du développeur Apple

    Lors de la configuration de l'URL de retour dans le Portail du développeur Apple (étape 6.9 du guide Apple), utilisez votre URL de fonction Edge Supabase :

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

    Important : Utilisez l'URL de fonction Edge Supabase

    N'utilisez pas l'URL de redirection provenant du guide de configuration de l'authentification Apple Login Android . Ce guide utilise une URL de serveur backend personnalisée.Pour l'intégration Supabase, vous devez utiliser votre URL de fonction Edge Supabase au lieu de celle-ci. Correspondance exacte requise

  3. Après avoir terminé le guide de configuration Apple, vous devriez avoir :

    APPLE_TEAM_ID

    • : Votre identifiant de l'équipe développeur AppleAPPLE_KEY_ID
    • : L'ID clé provenant du portail du développeur AppleAPPLE_PRIVATE_KEY
    • : Votre fichier de clé privée .p8 (doit être encodé en base64)ANDROID_SERVICE_ID
    • : Votre ID de service Apple (par exemple,exactly com.example.app.service)
    • BASE_REDIRECT_URL: Votre URL de lien profond (par exemple, capgo-demo-app://path)

Étape 3 : Définir les secrets Supabase

Étape 3 : Définir les secrets de Supabase

Nous devons maintenant configurer les variables d'environnement (secrets) pour la fonction Edge Supabase.

  1. Encodez votre clé privée

    Tout d'abord, encodez votre clé privée Apple (.p8) en base64 :

    Fenêtre de terminal
    base64 -i AuthKey_XXXXX.p8

    Copiez l'ensemble de la sortie (ce n'est qu'une seule longue chaîne).

  2. Définir les secrets en utilisant Supabase CLI

    Fenêtre de terminal
    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. Alternative : Définir des secrets dans le tableau de bord de Supabase

    Si vous préférez utiliser le tableau de bord :

    1. Allez dans votre tableau de bord de projet Supabase
    2. Naviguez vers Fonctions EdgeParamètresSecrets
    3. Ajoutez chaque variable de secret avec sa valeur

Étape 4 : Utilisez l'assistant d'authentification

Section intitulée “Étape 4 : Utilisez l'assistant d'authentification”

Vous pouvez maintenant utiliser l'assistant d'authentification dans votre application code.

La mise en œuvre complète est disponible dans le fichier de l'application d'exemple. supabaseAuthUtils.ts En utilisant l'Aide à l'authentification

Section intitulée « En utilisant l'Aide à l'authentification »

Copier dans le presse-papier
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);
}

Section intitulée « Mettre à jour la fonctionnalité de l'aide »

Lors de l'utilisation de la

fonction d'aide, vous authenticateWithAppleSupabase devez mettre à jour les valeurs suivantes pour qu'elles correspondent à votre configuration: __CAPGO_KEEP_0__

  1. Mise à jour redirectUrl - Définissez-le sur l'URL de votre fonction Edge Supabase :

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. Mise à jour clientId - Définissez-le sur votre ID de service 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,
    },
    });

Voir implémentation complète Pour référence.

  1. Construire et exécuter votre application Android

    Fenêtre de terminal
    npx cap sync android
    npx cap run android
  2. Tester le flux d'authentification

    • Cliquez sur le bouton « Se connecter avec Apple »
    • Vous devriez voir la page OAuth Apple dans un navigateur
    • Après avoir authentifié, vous devriez être redirigé vers votre application
    • Vérifiez les journaux de console pour tout erreur
  3. Vérifiez le flux

    Le flux complet devrait être :

    1. L'utilisateur appuie sur « Se connecter avec Apple »
    2. L'application ouvre un navigateur avec OAuth Apple
    3. L'utilisateur se connecte avec Apple
    4. Apple redirige vers : https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. La fonction Edge échange code par des jetons
    6. La fonction Edge redirige vers : your-app://path?id_token=...&access_token=...
    7. L'application Android reçoit le lien profond et traite le jeton d'identité
    8. L'application se connecte à Supabase avec le jeton d'identité

If l'authentification échoue :

  • URI de redirection incohérente: Vérifiez l'URL de retour dans le Portail du développeur Apple pour qu'elle corresponde exactement à APPLE_REDIRECT_URI secret
  • Lien profond ne fonctionne pas: Vérifiez que AndroidManifest.xml le filtre d'intention correspond à votre BASE_REDIRECT_URL
  • Secrets manquants: Vérifiez que tous les secrets sont correctement configurés à l'aide de supabase secrets list
  • L'échange de jeton échoue: Vérifiez les journaux de la fonction d'angle dans le tableau de bord de Supabase pour les messages d'erreur détaillés
  • L'application ne reçoit pas d'appel de rappel: Assurez-vous que onNewIntent est correctement implémenté dans MainActivity
  • Vérifiez le exemple d'application code en référence

Sur Android, Apple Sign-In utilise un flux de redirection OAuth :

  1. Initialisation: Le plugin est initialisé avec votre ID de service et l'URL de redirection de votre serveur
  2. Flux OAuth: Ouvre un navigateur/une fenêtre personnalisée Chrome avec la page OAuth d'Apple
  3. Callback de l'arrière-plan: Apple redirige votre fonction d'Edge Supabase avec une autorisation code
  4. Échange de jeton: La fonction d'Edge échange le code pour des jetons à l'aide de l'endpoint de jeton d'Apple
  5. Redirection de lien profond: La fonction d'Edge redirige vers votre application avec le jeton d'identité
  6. Authentification Supabase: L'application reçoit le jeton et s'authentifie auprès de Supabase

Cette flux est nécessaire car Apple ne fournit pas de support natif Android pour Sign in with Apple.

Continuez de Supabase Apple Login sur Android

Si vous utilisez

If you are using Supabase Apple Login sur Android pour planifier l'authentification et les flux de compte, connectez-le avec En utilisant @capgo/capacitor-social-login pour la capacité native dans En utilisant @capgo/capacitor-social-login, @capgo/capacitor-social-login pour le détail d'implémentation dans @capgo/capacitor-social-login, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-native-biometric pour le détail d'implémentation dans @capgo/capacitor-native-biometric, et Deux facteurs d'authentification pour le détail d'implémentation dans Deux facteurs d'authentification.