Passer au contenu principal
Tutoriel

Configurer l'authentification Supabase avec le plugin de connexion sociale Capacitor

Découvrez comment intégrer l'authentification Supabase avec le plugin de connexion sociale Capgo pour une authentification Google, Apple et Facebook fluide dans votre application Capacitor.

Martin Donadieu

Martin Donadieu

Responsable de contenu

Configurer l'authentification Supabase avec le plugin de connexion sociale Capacitor

Configurer l'authentification dans les applications mobiles peut être complexe, mais la combinaison de Supabase avec le Capgo Plugin d'authentification sociale makes it straightforward. This tutorial will guide you through integrating social authentication (Google, Apple, Facebook) with Supabase in your Capacitor app.

__CAPGO_KEEP_0__ application.

Pourquoi Utiliser Supabase avec l'authentification sociale? Supabase @capgo/capacitor-social-login @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-social-login @capgo/capacitor-supabase @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-supabase

  • Authentification sociale sans heurts
  • Gestion de jetons sécurisée
  • Compatibilité multiplateforme
  • Intégration de base de données en temps réel
  • Gestion des utilisateurs intégrée

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Un projet Capacitor configuré
  • Un compte et un projet Supabase
  • Des comptes développeurs pour vos fournisseurs sociaux choisis (Google, Apple, Facebook)

Étape 1 : Installez et configurez le plugin de connexion sociale

Installez d'abord le plugin de connexion sociale Capgo :

npm install @capgo/capacitor-social-login
npx cap sync

Consultez les Connexion sociale et Supabase pages de plugin pour la configuration spécifique à la plateforme.

Étape 2 : Configuration du projet Supabase

Créez et configurez votre projet Supabase

  1. Créez un projet Supabase:

    • Allez à supabase.com et vous inscrire/ vous connecter
    • Cliquez “Nouveau Projet”
    • Choisissez votre organisation
    • Entrez un Nom de projet (par exemple, « MonApp Auth »)
    • Définissez un Mot de passe de base de données (sauvez-le en toute sécurité)
    • Sélectionnez votre Région (choisissez celle la plus proche de vos utilisateurs)
    • Cliquez Créer un nouveau projet
  2. Obtenez vos informations de projet:

    • Une fois créé, allez à Paramètres > API
    • Copiez votre URL de projet (par exemple, https://your-project-ref.supabase.co)
    • Copiez votre public anonyme API clé
    • Sauvez-les pour une utilisation ultérieure dans votre application

Configurer les paramètres d'authentification

  1. Configurer les paramètres d'authentification généraux:

    • Allez à Authentification > Paramètres
    • Sous Paramètres généraux:
      • Définir URL du site à l'URL de votre application (par exemple, https://yourdomain.com ou http://localhost:3000 pour le développement)
      • Ajouter des URL de redirection supplémentaires __CAPGO_KEEP_0__ si nécessaire :
        http://localhost:3000
        https://yourdomain.com
        capacitor://localhost (for mobile apps)
  2. Configurer les paramètres de messagerie (facultatif mais recommandé) :

    • Sous Paramètres SMTP, configurez votre fournisseur de messagerie
    • Cela active les confirmations par courrier électronique et les réinitialisations de mot de passe
    • Pour le développement, vous pouvez utiliser le service de messagerie intégré

Activer les fournisseurs d'authentification sociale

  1. Accédez à la section fournisseurs:
    • Allez à Authentification > Fournisseurs dans votre tableau de bord Supabase
    • Vous verrez une liste des fournisseurs sociaux disponibles
    • Chaque fournisseur a un Activer bouton d'activation et options de configuration

Configurez maintenant chaque fournisseur social en détail :

Étape 3 : Configurer les fournisseurs sociaux dans Supabase

Configuration de l'authentification Google dans Supabase

Tout d'abord, obtenez vos clés OAuth Google :

Suivez notre guide détaillé de configuration Google : Configuration de l'authentification Google

Ce guide couvre :

  • Créer un projet Cloud Google
  • Configurer les informations d'identification OAuth 2.0 pour web, iOS et Android
  • Configurer l'écran de consentement
  • Obtenir les identifiants Client requis et secrets

Après avoir terminé la configuration de Google, configurez-le dans Supabase :

  1. Activer le fournisseur Google dans Supabase:
    • Dans votre tableau de bord Supabase, allez à Authentification > Fournisseurs
    • Trouvez Google et activez-le EN FAIT
    • Remplissez la configuration :
      • ID du client: Votre Google OAuth Web ID du client (à partir du Google Cloud Console)
      • Secret du client: Votre Google OAuth Web Secret du client
      • URL de redirection: https://your-project-ref.supabase.co/auth/v1/callback (remplie automatiquement)
    • Cliquez Sauvegarder

Important: Utilisez le ID du client Web et le secret du client Web dans Supabase, même si vous construisez une application mobile. Les ID de client mobile sont utilisés séparément dans la configuration du plugin.

Configuration de l'authentification Apple dans Supabase

Obtenez les informations d'identification Apple :

Suivez notre guide détaillé de configuration Apple : Configuration de l'authentification Apple

Ce guide couvre :

  • Configuration de votre compte Apple Developer
  • Création d'identifiants App et Service
  • Configuration de la capacité Sign in with Apple
  • Génération des clés privées requises
  • Configuration spécifique à la plateforme pour iOS, Android et Web

Après avoir terminé la configuration Apple, configurez-la dans Supabase :

  1. Activer le fournisseur Apple dans Supabase:
    • Allez à Authentification > Fournisseurs et basculez Apple ACTIVÉ
    • Remplissez la configuration :
      • ID client: Votre identifiant d'application Service (par exemple, com.yourapp.signin)
      • Secret client: Générez cet JWT à l'aide de votre clé privée Apple (voir Supabase Apple docs pour le format JWT)
      • URL de redirection: https://your-project-ref.supabase.co/auth/v1/callback (remplie automatiquement)
    • Cliquez “Enregistrer”

Note: La configuration d'authentification Apple est la plus complexe en raison des exigences d'Apple pour les identifiants de service, les clés privées et la génération de JWT. Suivez notre documentation soigneusement pour chaque plateforme.

Configuration de l'authentification Facebook dans Supabase

Obtenez vos identifiants Facebook :

Suivez notre guide de configuration Facebook complet : Configuration de l'authentification Facebook

Ceci couvre :

  • Créer un compte développeur Facebook et une application
  • Ajouter le produit de connexion Facebook
  • Configurer les URIs de redirection OAuth
  • Obtenir votre ID d'application, votre secret d'application et votre jeton client
  • Configuration spécifique à la plateforme pour iOS et Android

Après avoir terminé la configuration Facebook, configurez-la dans Supabase :

  1. Activer le fournisseur Facebook dans Supabase:
    • Allez à Authentification > Fournisseurs et basculez Facebook ACTIVÉ
    • Remplissez les informations de configuration :
      • ID du client: Votre ID d'application Facebook
      • Secret du client: Votre secret d'application Facebook
      • URL de redirection: https://your-project-ref.supabase.co/auth/v1/callback (rempli automatiquement)
    • Cliquez “Sauvegarder”

Important Assurez-vous d'ajouter l'URL de rappel Supabase (https://your-project-ref.supabase.co/auth/v1/callback) à vos paramètres de l'application Facebook : Valides URIs de redirection OAuth Paramètres de connexion Facebook.

Remarques importantes de configuration de Supabase

Niveau de sécurité par ligne (RLS) :

  • Après avoir configuré l'authentification, activez RLS sur vos tables
  • Allez à Base de données > Tables et basculer Activer RLS pour chaque table
  • Créer des politiques pour contrôler l'accès aux données en fonction des utilisateurs authentifiés

Gestion des utilisateurs :

  • Afficher les utilisateurs authentifiés dans Authentification > Utilisateurs
  • Surveiller les événements d'authentification dans Authentification > Journal
  • Configurer les modèles de courriel dans Authentification > Modèles de courriel

Testing the Configuration:

  • Utilisez l'outil de test d'authentification intégré de Supabase
  • Allez à Authentification > Utilisateurs et cliquez sur “Invitez l'utilisateur” pour tester les flux par e-mail
  • Vérifiez la Section des journaux pour tout erreur d'authentification

Étape 4 : Configurez le plugin de connexion sociale

Maintenant que Supabase est configuré, vous devez configurer le plugin de connexion sociale avec les informations correspondantes. Important: La plugin nécessite les informations d'authentification OAuth des fournisseurs d'origine (pas de Supabase), tandis que Supabase gère l'authentification côté serveur.

Comment fonctionne le flux d'authentification

Avant de plonger dans la configuration, comprenez le flux :

  1. La plugin s'authentifie avec le fournisseur social (Google/Apple/Facebook) de manière native
  2. La plugin reçoit les jetons (jeton d'accès, jeton d'ID) du fournisseur
  3. Votre application envoie ces jetons à Supabase en utilisant signInWithIdToken()
  4. Supabase valide les tokens avec le fournisseur et crée une session d'utilisateur
  5. Supabase retourne son propre jeton JWT pour les requêtes authentifiées de votre application

Configuration du plugin Google

Le plugin nécessite votre ID de client Web pour tous les plateformes et optionnellement un ID de client iOS pour les fonctionnalités spécifiques à iOS :

import { SocialLogin } from '@capgo/capacitor-social-login';

await SocialLogin.initialize({
  google: {
    // Use the same Web Client ID you configured in Supabase
    webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
    
    // Optional: iOS Client ID for iOS-specific features
    iOSClientId: 'YOUR_IOS_CLIENT_ID.apps.googleusercontent.com',
    
    // Optional: Request offline access for refresh tokens
    mode: 'offline'
  }
});

Points clés pour Google :

  • Utilisez le ID du client Web (pas les identifiants Android/iOS) pour le webClientId champ
  • Le plugin fonctionnera sur tous les plateformes avec uniquement l'ID du client Web
  • Le iOSClientId est optionnel et n'est utilisé que pour les fonctionnalités iOS spécifiques de Google

Configuration du plugin Apple

La configuration Apple diffère entre iOS et Android:

Pour iOS (signe d'Apple natif):

await SocialLogin.initialize({
  apple: {
    // No additional configuration needed for iOS
    // The plugin uses the native Apple Sign-In capability
  }
});

Pour Android/Web (nécessite l'ID de service):

await SocialLogin.initialize({
  apple: {
    clientId: 'YOUR_SERVICE_ID', // The Service ID from Apple Developer Portal
    redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
  }
});

Points clés pour Apple :

  • iOS utilise l'authentification native Sign in with Apple (aucune configuration supplémentaire nécessaire)
  • Android/Web nécessite l'ID de service que vous avez créé dans le Portail des développeurs Apple
  • Le redirectUrl devrait correspondre à ce que vous avez configuré dans le Portail des développeurs Apple et Supabase

Configuration du plugin Facebook

Facebook nécessite votre ID d'application et votre jeton client :

await SocialLogin.initialize({
  facebook: {
    appId: 'YOUR_FACEBOOK_APP_ID',        // From Facebook Developer Dashboard
    clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN', // From Facebook Developer Dashboard
    
    // Optional: Use Facebook Limited Login (for enhanced privacy)
    limitedLogin: false // See our Facebook setup guide for important Limited Login details
  }
});

Points clés pour Facebook :

  • Utilisez le même ID d'application que vous avez configuré dans Supabase
  • Le jeton client se trouve dans les paramètres de base de votre application Facebook
  • limitedLogin: true active la fonctionnalité de connexion limitée de Facebook, axée sur la vie privée (iOS uniquement)
  • Important: Voir notre guide de configuration Facebook pour des informations détaillées sur l'authentification, y compris les considérations ATT

Initialisation complète du plugin

Ceci est la manière de initialiser tous les fournisseurs ensemble :

import { SocialLogin } from '@capgo/capacitor-social-login';

export async function initializeSocialLogin() {
  await SocialLogin.initialize({
    google: {
      webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
      mode: 'offline'
    },
    facebook: {
      appId: 'YOUR_FACEBOOK_APP_ID',
      clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
    },
    apple: {
      // iOS: no config needed
      // Android/Web: uncomment the lines below
      // clientId: 'YOUR_SERVICE_ID',
      // redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
    }
  });
}

Remarques importantes :

  • Appeler initialize() une seule fois lorsque votre application démarre, et non avant chaque connexion
  • Vous n'avez besoin de configurer que les fournisseurs que vous prévoyez d'utiliser
  • Les informations de connexion ici proviennent des fournisseurs d'originepas de Supabase
  • Assurez-vous que les informations de connexion du fournisseur correspondent à ce que vous avez configuré dans Supabase

Étape 5 : Configurer le client Supabase

Installez le client Supabase :

npm install @supabase/supabase-js

Créez un service Supabase :

// services/supabase.ts
import { createClient } from '@supabase/supabase-js';

const supabaseUrl = 'https://your-project-ref.supabase.co';
const supabaseKey = 'your-anon-public-key';

export const supabase = createClient(supabaseUrl, supabaseKey, {
  auth: {
    autoRefreshToken: true,
    persistSession: true,
    detectSessionInUrl: false,
  },
});

Étape 6 : Mettre en œuvre le flux d'authentification

Créez un service d'authentification qui combine les deux :

// services/auth.ts
import { SocialLogin } from '@capgo/capacitor-social-login';
import { supabase } from './supabase';

export class AuthService {
  
  async initializeSocialLogin() {
    await SocialLogin.initialize({
      google: {
        webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
      },
      facebook: {
        appId: 'YOUR_FACEBOOK_APP_ID',
        clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
      },
      apple: {} // iOS configuration
    });
  }

  async signInWithGoogle() {
    try {
      const result = await SocialLogin.login({
        provider: 'google',
        options: {
          scopes: ['email', 'profile']
        }
      });

      const googleResult = result.result;
      if (!googleResult) {
        throw new Error('Google login failed');
      }

      // GoogleLoginResponse is a union type - check responseType to determine flow
      if (googleResult.responseType === 'online') {
        // Online mode: use idToken directly with Supabase
        const { data, error } = await supabase.auth.signInWithIdToken({
          provider: 'google',
          token: googleResult.idToken!,
        });
        if (error) throw error;
        return data;
      } else {
        // Offline mode: exchange serverAuthCode on your backend
        // Your backend should exchange the code for tokens and create a Supabase session
        const response = await fetch('/api/auth/google', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ serverAuthCode: googleResult.serverAuthCode })
        });
        return response.json();
      }
    } catch (error) {
      console.error('Google sign-in error:', error);
      throw error;
    }
  }

  async signInWithApple() {
    try {
      const result = await SocialLogin.login({
        provider: 'apple',
        options: {
          scopes: ['email', 'name']
        }
      });

      const { data, error } = await supabase.auth.signInWithIdToken({
        provider: 'apple',
        token: result.result?.identityToken!,
      });

      if (error) throw error;
      return data;
    } catch (error) {
      console.error('Apple sign-in error:', error);
      throw error;
    }
  }

  async signInWithFacebook() {
    try {
      const result = await SocialLogin.login({
        provider: 'facebook',
        options: {
          permissions: ['email', 'public_profile']
        }
      });

      const fbResult = result.result;
      if (!fbResult?.accessToken?.token) {
        throw new Error('Facebook login failed - no access token received');
      }

      // Facebook uses accessToken for Supabase authentication
      const { data, error } = await supabase.auth.signInWithIdToken({
        provider: 'facebook',
        token: fbResult.accessToken.token,
      });

      if (error) throw error;
      return data;
    } catch (error) {
      console.error('Facebook sign-in error:', error);
      throw error;
    }
  }

  async signOut() {
    // Sign out from Supabase
    await supabase.auth.signOut();
    
    // Optionally sign out from social providers
    await SocialLogin.logout({
      provider: 'google' // or 'apple', 'facebook'
    });
  }

  getCurrentUser() {
    return supabase.auth.getUser();
  }

  onAuthStateChange(callback: (event: string, session: any) => void) {
    return supabase.auth.onAuthStateChange(callback);
  }
}

export const authService = new AuthService();

Étape 7 : Mettre en œuvre dans votre application

Initialisez le service et gérez l'authentification :

// main.ts or app component
import { authService } from './services/auth';

async function initializeApp() {
  await authService.initializeSocialLogin();
  
  // Listen to auth state changes
  authService.onAuthStateChange((event, session) => {
    if (event === 'SIGNED_IN') {
      console.log('User signed in:', session.user);
      // Redirect to authenticated area
    } else if (event === 'SIGNED_OUT') {
      console.log('User signed out');
      // Redirect to login
    }
  });
}

initializeApp();

Créez des boutons de connexion dans votre interface utilisateur :

// Login component
async function handleGoogleLogin() {
  try {
    const user = await authService.signInWithGoogle();
    console.log('Signed in with Google:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleAppleLogin() {
  try {
    const user = await authService.signInWithApple();
    console.log('Signed in with Apple:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleFacebookLogin() {
  try {
    const user = await authService.signInWithFacebook();
    console.log('Signed in with Facebook:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleLogout() {
  try {
    await authService.signOut();
    console.log('Signed out successfully');
  } catch (error) {
    console.error('Logout failed:', error);
  }
}

Étape 8 : Configuration spécifique au plateau

Configuration iOS

Pour des instructions de configuration iOS détaillées, consultez nos guides spécifiques à la plateforme :

Résumé rapide - Ajouter à ios/App/App/Info.plist:

<!-- Google Sign-In URL scheme -->
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>YOUR_REVERSED_CLIENT_ID</string>
    </array>
  </dict>
</array>

<!-- Apple Sign-In capability -->
<key>com.apple.developer.applesignin</key>
<array>
  <string>Default</string>
</array>

Suivez les guides liés pour obtenir des instructions de configuration iOS complètes, y compris la configuration du projet Xcode.

Configuration Android

Pour des instructions de configuration d'Android détaillées, consultez nos guides spécifiques à la plateforme :

Configuration d'Android essentielle:

1. Obtenez votre empreinte SHA-1 (nécessaire pour Google) :

# For debug builds (development)
cd android
./gradlew signingReport

# Look for the SHA1 fingerprint under "Variant: debug"
# Add this SHA1 to your Google Cloud Console Android OAuth client

2. Configurez AndroidManifest.xml - Ajoutez à android/app/src/main/AndroidManifest.xml:

<!-- Internet permission -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- Facebook configuration -->
<meta-data 
  android:name="com.facebook.sdk.ApplicationId" 
  android:value="@string/facebook_app_id"/>
<meta-data 
  android:name="com.facebook.sdk.ClientToken" 
  android:value="@string/facebook_client_token"/>

3. Ajoutez les ressources Facebook à android/app/src/main/res/values/strings.xml:

<string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
<string name="facebook_client_token">YOUR_FACEBOOK_CLIENT_TOKEN</string>

Suivez les guides des plateformes liées pour une configuration complète d'Android, y compris la configuration des services Google Play et du nom de package.

Étape 9 : Utilisation de la base de données Supabase avec des utilisateurs authentifiés

Une fois les utilisateurs authentifiés, vous pouvez utiliser la base de données Supabase avec la sécurité de niveau de ligne (RLS) :

// Example: Fetch user profile
async function getUserProfile() {
  const { data: user } = await supabase.auth.getUser();
  
  if (user) {
    const { data, error } = await supabase
      .from('profiles')
      .select('*')
      .eq('id', user.user.id)
      .single();
    
    return data;
  }
}

// Example: Update user profile
async function updateUserProfile(updates: any) {
  const { data: user } = await supabase.auth.getUser();
  
  if (user) {
    const { data, error } = await supabase
      .from('profiles')
      .update(updates)
      .eq('id', user.user.id);
    
    return data;
  }
}

Considérations de sécurité importantes

  1. N'exposez jamais les clés sensibles dans votre client code
  2. Utilisez les variables d'environnement pour la configuration
  3. Activer la sécurité de niveau de ligne dans Supabase
  4. Vérifiez les jetons sur votre serveur de backend si nécessaire
  5. Gérez la mise à jour des jetons automatiquement avec Supabase

Résolution des problèmes courants

Erreurs de correspondance de jetons

  • Assurez-vous que les configurations de votre fournisseur OAuth soient identiques entre le plugin de connexion sociale et Supabase
  • Vérifiez que les URL de redirection sont correctement configurées

Problèmes spécifiques à la plateforme

  • iOS : Vérifiez que votre identifiant de bundle correspond à votre configuration Apple Developer
  • Android : Assurez-vous que les empreintes SHA1 soient correctement ajoutées à Google Console

Interruptions de flux d'authentification

  • Implémenter un traitement d'erreur approprié pour les problèmes de réseau
  • Ajouter des états de chargement pendant l'authentification

Conclusion

Vous disposez maintenant d'un système d'authentification complet qui combine le backend robuste de Supabase avec des capacités de connexion sociale native. Cette configuration fournit :

  • Authentification sociale native sécurisée
  • Gestion de jetons sans heurt
  • Intégration de base de données en temps réel
  • Compatibilité multiplateforme

La combinaison de Supabase et du plugin de connexion sociale Capgo de Capgo offre une solution d'authentification puissante et scalable pour vos applications Capacitor.

Pour des fonctionnalités avancées comme l'authentification à deux facteurs ou déclarations personnalisées , consultez la documentation de Supabaseet la documentation du plugin de connexion sociale Continuez à partir de la mise en place de l'authentification Supabase avec le plugin de connexion sociale __CAPGO_KEEP_0__ Si vous utilisez Mise en place de l'authentification Supabase avec le plugin de connexion sociale __CAPGO_KEEP_0__.

Keep going from Setup Supabase Authentication with Capacitor Social Login Plugin

@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-social-login pour les détails d'implémentation dans @Capacitor/__CAPGO_KEEP_1__-social-login et les flux de compte, connectez-le avec pour les détails d'implémentation dans @capgo/capacitor-social-login et les détails d'implémentation dans @capgo/capacitor-social-login pour la clé de passe @capgo/capacitor pour plus de détails sur l'implémentation dans @capgo/capacitor-passkey pour la clé de passe native @capgo/capacitor pour plus de détails sur l'implémentation dans @capgo/capacitor-native-biometric Authentification à deux facteurs pour plus de détails sur l'implémentation dans Authentification à deux facteurs SSO (Entreprise) pour plus de détails sur l'implémentation dans SSO (Entreprise)

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'un bug de la couche web est en ligne, expédiez la correction à travers Capgo au lieu de attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale.

Démarrer maintenant

Dernières actualités de notre Blog

Capgo vous offre les meilleures informations nécessaires pour créer une application mobile véritablement professionnelle.