Passer à la navigation principale

Supabase Apple Login sur Android

GitHub

Ce guide vous aidera à intégrer Apple Sign-In avec l'authentification Supabase sur Android. Il est supposé que vous avez déjà terminé:

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

  1. Naviguez jusqu'à votre dossier de projet Supabase

    Fenêtre de terminal
    cd your-project/supabase
  2. Créer la fonction de bord si elle n'existe pas

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

    La mise en œuvre complète de la fonction de bord est disponible dans l'application d'exemple Copiez les fichiers suivants dans votre projet :.

    - Fonction de bord principale __CAPGO_KEEP_0__

    • supabase/functions/apple-signin-callback/index.ts Copiez les fichiers suivants dans votre projet : - Fonction de bord 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

    - L'endpoint de rappel OAuth Apple doit être public (aucune authentification requise) car Apple le redirigera vers lui. Mettez à jour votre supabase/config.toml - fichier :

    [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 votre URL de fonction

    Après déploiement, vous obtiendrez une URL comme celle-ci :

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

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

    1. Ouvrir https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. Cliquez sur la apple-signin-callback URL de fonction pour la copier. Appel de rappel de Supabase pour la connexion Apple

Nous devons maintenant configurer le portail Apple Developer avec l'URL de serveur et obtenir toutes les valeurs requises.

  1. Suivez le guide de configuration de l'authentification Apple Android

    Terminez le guide de configuration de l'authentification Apple Android à :

    • Créez 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éfinir l'URL de retour dans le portail Apple Developer

    Lors de la configuration de l'URL de retour dans le portail Apple Developer (é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'oubliez pas de utiliser l'URL de redirection duguide de configuration Apple Login Android Cela utilise une URL de serveur backend personnalisée. Pour l'intégration Supabase, vous devez

  3. Collectez toutes les valeurs requises

    Après avoir terminé la guide de configuration Apple, vous devriez avoir :

    • APPLE_TEAM_ID: Votre identifiant de l'équipe Apple Developer
    • APPLE_KEY_ID: L'ID de clé provenant du portail Apple Developer
    • APPLE_PRIVATE_KEY: Votre fichier de clé privée .p8 (doit être encodé en base64)
    • ANDROID_SERVICE_ID: Votre identifiant de service Apple (par exemple, com.example.app.service)
    • BASE_REDIRECT_URL: Votre URL de redirection en profondeur (par exemple, capgo-demo-app://path)

Nous devons maintenant configurer les variables d'environnement (secrets) pour la fonction Edge de 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 (c'est une seule longue chaîne).

  2. Définir les secrets à l'aide de 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

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 Utilisation de l'Assistant d'Authentification

Section intitulée « Utilisation de l'Assistant d'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'Assistant »

Lors de l'utilisation de

l'assistant authenticateWithAppleSupabase fonction d'aide, vous devez mettre à jour les valeurs suivantes pour les adapter à votre configuration :

  1. Mettre à jour redirectUrl - Définissez cette valeur sur votre URL de fonction Supabase Edge :

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. Mettre à jour clientId - Définissez cette valeur 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 le la mise en œuvre complète en tant que 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 « Connectez-vous avec Apple »
    • Vous devriez voir la page OAuth Apple dans un navigateur
    • Après l'authentification, vous devriez être redirigé vers votre application
    • Vérifiez les journaux de console pour toute 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 Apple OAuth
    3. L'utilisateur s'authentifie avec Apple
    4. Apple redirige vers : https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. La fonction Edge échange code contre 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. La plateforme s'authentifie auprès de Supabase avec le jeton d'identité

Si l'authentification échoue :

  • Erreur de correspondance de l'URI de redirection: Vérifiez que l'URL de retour dans le Portail du développeur Apple correspond exactement à APPLE_REDIRECT_URI secret
  • La profondeur de la lien ne fonctionne pas: Vérifiez que AndroidManifest.xml l'filtre d'intention correspond à votre BASE_REDIRECT_URL
  • Les secrets manquants: Vérifiez que tous les secrets sont correctement configurés à l'aide de supabase secrets list
  • Échec de l'échange de jeton: Vérifiez les journaux de fonction d'angle dans le tableau de bord de Supabase pour obtenir des messages d'erreur détaillés
  • La mise à jour de l'application n'obtient pas le callback: Assurez-vous que onNewIntent est correctement implémenté dans MainActivity
  • Examinez l'application d'exemple __CAPGO_KEEP_0__ example app code Comment ça marche

Initialisation

  1. Comment ça marche: Le plugin est initialisé avec votre ID de service et l'URL de redirection de votre serveur
  2. OAuth Flow: Ouvre une fenêtre de navigateur ou une fenêtre personnalisée de Chrome avec la page d'authentification d'Apple
  3. Callback de serveur: Apple redirige vers 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 le Sign in with Apple

Si vous utilisez Supabase Apple Login sur Android pour planifier l'authentification et les flux de compte, connectez-l’à 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 les détails d'implémentation dans @capgo/capacitor-native-biometric, et Authentification à deux facteurs pour les détails d'implémentation dans Authentification à deux facteurs.