Passer au contenu

Connexion Google sur iOS

Dans ce guide, vous allez apprendre à configurer la connexion Google avec Capgo Social Login sur iOS.

Je pars du principe que vous avez déjà lu le guide de configuration général.

Dans cette partie, vous allez configurer la connexion Google sur iOS.

  1. Créez un ID client iOS dans la console Google

    1. Cliquez sur la barre de recherche

      Barre de recherche de la Google Console
    2. Recherchez credentials, puis cliquez sur le résultat APIs and Services (numéro 2 sur la capture)

      Résultats de recherche montrant l'option credentials dans APIs and Services
    3. Cliquez sur create credentials

      Bouton create credentials dans la Google Console
    4. Sélectionnez OAuth client ID

      Option OAuth client ID dans le menu de création des identifiants
    5. Réglez Application type sur iOS

      Sélection du type d'application avec iOS mis en avant
    6. Récupérez le bundle ID

      1. Ouvrez Xcode

      2. Double-cliquez sur App

        Cible App dans le navigateur de projet Xcode
      3. Vérifiez que vous êtes bien dans Targets -> App

        Section Targets dans Xcode avec App sélectionnée
      4. Repérez votre Bundle Identifier

        Champ Bundle Identifier dans les réglages du projet Xcode
      5. Revenez à la Google Console et collez votre Bundle Identifier dans Bundle ID

        Champ Bundle ID dans le formulaire de création du client iOS
    7. Vous pouvez ajouter votre App Store ID ou votre Team ID dans l’ID client si l’application est déjà publiée sur l’App Store

    8. Une fois tous les champs remplis, cliquez sur Create

      Bouton Create en bas du formulaire de création du client iOS
    9. Cliquez sur OK

      Bouton OK dans la fenêtre de confirmation de création du client
    10. Ouvrez le client iOS nouvellement créé

      Nouveau client iOS dans la liste des identifiants
    11. Copiez les informations suivantes

      Détails du client affichant le client ID et le client ID inversé à copier
  2. Modifiez le fichier Info.plist de votre app

    1. Ouvrez Xcode et trouvez le fichier Info.plist

      Fichier Info.plist dans le navigateur de projet Xcode
    2. Faites un clic droit sur ce fichier et ouvrez-le en tant que code source

      Menu contextuel avec l'option Open As Source Code
    3. En bas de votre fichier Plist, vous verrez une balise </dict>

      Balise dict fermante dans le fichier Info.plist
    4. Insérez le fragment suivant juste avant la balise de fermeture </dict>

      Info.plist avec le code des URL schemes inséré avant la balise dict fermante
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Remplacez YOUR_DOT_REVERSED_IOS_CLIENT_ID par la valeur copiée à l’étape précédente

      Info.plist avec la vraie valeur du client ID inversé
    6. Enregistrez le fichier avec Command + S

  3. Modifiez AppDelegate.swift

    1. Ouvrez AppDelegate

      Fichier AppDelegate.swift dans le navigateur de projet Xcode
    2. Ajoutez import GoogleSignIn en haut du fichier

      AppDelegate.swift avec l'import GoogleSignIn ajouté
    3. Trouvez la fonction func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:])

      Fonction application openURL originale dans AppDelegate
    4. Modifiez la fonction pour qu’elle ressemble à ceci

      func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
      // Called when the app was launched with a url. Feel free to add additional processing here,
      // but if you want the App API to support tracking app url opens, make sure to keep this call
      var handled: Bool
      handled = GIDSignIn.sharedInstance.handle(url)
      if handled {
      return true
      }
      return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
      }
      Fonction application openURL modifiée avec la gestion de GoogleSignIn
    5. Enregistrez le fichier avec Command + S

  4. Configurez la connexion Google dans votre code JavaScript ou TypeScript

    1. Importez SocialLogin et Capacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. Appelez la méthode initialize une seule fois

      Configuration de base (mode en ligne, recommandé pour la plupart des applications) :

      // onMounted is Vue specific
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      iOSClientId: '673324426943-redacted.apps.googleusercontent.com',
      mode: 'online' // Default mode
      }
      })
      })

      Configuration avancée avec des ID client supplémentaires :

      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: 'YOUR_WEB_CLIENT_ID', // Optional: for web platform support
      iOSClientId: 'YOUR_IOS_CLIENT_ID', // Required: from step 1
      iOSServerClientId: 'YOUR_WEB_CLIENT_ID', // Optional: same as webClientId, needed for some advanced features
      mode: 'online' // 'online' or 'offline'
      }
      })
      })
    3. Implémentez la fonction de connexion. Créez un bouton et exécutez le code suivant au clic

      Pour le mode en ligne :

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response - contains user data
      console.log(JSON.stringify(res))

      Pour le mode hors ligne :

      const res = await SocialLogin.login({
      provider: 'google',
      options: {
      forceRefreshToken: true // Recommended for offline mode
      }
      })
      // res contains serverAuthCode, not user data
      // Send serverAuthCode to your backend to get user information
      console.log('Server auth code:', res.result.serverAuthCode)
  5. Testez votre application

    1. Générez votre application puis exécutez cap sync

    2. Si tout est correctement configuré, vous devriez voir le flux de connexion Google fonctionner normalement

      Démonstration du flux de connexion Google sur iOS avec authentification réussie

Incompatibilité avec le plugin Privacy Screen

Section titled “Incompatibilité avec le plugin Privacy Screen”

Le plugin Google Login est incompatible avec @capacitor/privacy-screen. Lorsque les deux plugins sont utilisés ensemble, la webview de connexion Google est interrompue par l’écran de confidentialité.

Contournement : appelez await PrivacyScreen.disable(); avant de lancer la connexion :

import { PrivacyScreen } from '@capacitor/privacy-screen';
import { SocialLogin } from '@capgo/capacitor-social-login';
await PrivacyScreen.disable();
await SocialLogin.login({
provider: 'google',
options: {}
});