Passer à la navigation

Connexion Google sur Android

GitHub

In this guide, you will learn how to setup Google Login with Capgo Social Login for Android. I assume that you have already read the Guide de configuration générale.

In cette partie, vous apprendrez à configurer l'authentification Google sur Android.

  1. Créer un identifiant de client Android.

    1. Cliquez sur la barre de recherche

      barre de recherche du Console Google
    2. Recherchez pour credentials et cliquez sur le APIs and Services un (le numéro 2 sur l'écran d'écran)

      Résultats de recherche montrant l'option de credenciaux avec API et Services mis en surbrillance
    3. Cliquez sur le create credentials

      bouton Créer des crédentials dans le Console Google
    4. Choisissez OAuth client ID

      Option de client OAuth dans le menu de création de clés d'identification
    5. Choisissez le Android Type d'application

      Type d'application avec l'option Android mise en surbrillance
    6. Ouvrez Android Studio

    7. À la base de la barre de navigation, trouvez la Gradle Scripts

      Section des scripts Gradle dans le navigateur de projet Android Studio
    8. Trouvez build.gradle pour le module app

      Fichier build.gradle (Module : app) dans la section des scripts Gradle
    9. Copiez le android.defaultConfig.applicationIdCela sera votre package name dans le console Google

      Fichier Build.gradle montrant la configuration de l'applicationId
    10. Ouvrez maintenant le terminal. Assurez-vous d'être dans le android dossier de votre application et exécutez ./gradlew signInReport

    Terminal affichant la commande gradlew signInReport
    1. Faites défiler vers le haut de cette commande. Vous devriez voir les éléments suivants. Copiez le SHA1.
    Sortie du terminal montrant l'empreinte de certificat SHA1
    1. Retournez maintenant dans la Console Google. Entrez votre applicationId comme le Package Name et votre SHA1 dans le champ de certificat et cliquez sur create
    Formulaire de création du client Android avec les champs de nom de package et SHA1 remplis
  2. Créez un client web (c'est obligatoire pour Android)

    1. Allez sur la Create credentials page dans le Console Google

    2. Fixez le type d'application sur Web

       Sélection de type d'application avec option Web mise en surbrillance
    3. Cliquez sur Create

      Formulaire de création de client web avec bouton Créer en bas
    4. Copiez l'ID client, vous en aurez besoin comme le webClientId dans votre JS/TS code

      Détails du client ID affichant l'ID du client Web à copier
  3. Modifier votre MainActivity

    1. Ouvrez votre application dans Android Studio. Vous pouvez exécuter cap open android

    2. Trouvez MainActivity.java

      1. Ouvrez le app dossier

        Le dossier App dans le navigateur de projet Android Studio
      2. Trouvez java

        Le dossier Java dans la structure de projet Android Studio
      3. Trouvez votre MainActivity.java et cliquez dessus

        Le fichier MainActivity.java dans la structure de package
    3. Modifiez MainActivity.javaVeuillez ajouter le suivant code

      import ee.forgr.capacitor.social.login.GoogleProvider;
      import ee.forgr.capacitor.social.login.SocialLoginPlugin;
      import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;
      import com.getcapacitor.PluginHandle;
      import com.getcapacitor.Plugin;
      import android.content.Intent;
      import android.util.Log;
      import com.getcapacitor.BridgeActivity;
      // ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!
      public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Google Activity Result", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);
      }
      }
      // This function will never be called, leave it empty
      @Override
      public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}
      }
    4. Enregistrez le fichier

  4. Use Google Login in your application

    1. Tout d'abord, importez SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. Appeler l'initialisation. Il convient de l'appeler qu'une seule fois.

      // onMounted is Vue specific
      // webClientId is the client ID you got in the web client creation step not the android client ID.
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',
      }
      })
      })
    3. Appeler SocialLogin.loginCréez un bouton et exécutez le code suivant code lors du clic.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. Configurez l'émulateur pour les tests

    1. Allez dans Device manager et cliquez sur le bouton plus

      Gestionnaire de dispositifs dans Android Studio avec bouton plus mis en surbrillance
    2. Créez un appareil virtuel

      Bouton Créer un appareil virtuel dans la configuration de l'appareil virtuel
    3. Sélectionnez n'importe quel appareil avec un Play Store icône

      Sélection de matériel montrant les appareils avec prise en charge de Google Play.

      Comme vous pouvez le voir, le pixel 8 Supporte par Play Store services

    4. Cliquez next

      Next button in device creation wizard
    5. Assurez-vous que l'image d'OS est de type Google Play. Il faut de type Google Play

      Sélection de l'image du système affichant des images de type Google Play
    6. Click next

      Next button in system image selection screen
    7. Vérifiez votre appareil. Vous pouvez nommer votre émulateur comme vous le souhaitez

      Écran de vérification de la configuration de l'appareil avec bouton Terminer
    8. Allez dans Device Manager et démarrez votre simulateur

      Gestionnaire d'appareils avec appareil virtuel listé et bouton Jouer
    9. Après le démarrage du simulateur, allez dans ses paramètres

      Émulateur Android affichant l'application Paramètres
    10. Allez dans Google Play

    Écran de paramètres avec option Google Play
    1. Cliquez Update et attendez environ 60 secondes
    Écran de mise à jour Google Play avec bouton Mettre à jour
  6. Testez votre application

    Si vous avez fait tout correctement, vous devriez voir le flux de connexion Google fonctionner correctement :

    Démonstration du flux de connexion Google sur Android montrant le processus de connexion et l'authentification réussie

Si vous rencontrez des problèmes, comparez d'abord vos paramètres d'application avec les valeurs du Cloud Console Google. Les échecs de connexion Google Sign-In sur Android sont généralement causés par une incohérence entre le nom de package, la valeur SHA-1 ou l'ID client.

Sur Android, ce plugin utilise le Gestionnaire de Clés Google.androidx.credentials et Connectez-vous avec Google), pas la version legacy GoogleSignInClient API. Erreurs de logcat telles que GetCredentialCustomException: [28444] Developer console is not set up correctly Gestion des jetons, SHA-1 et Firebase

Filtrer Logcat avec GoogleProvider ou CapgoSocialLogin Après un échec de connexion. Le plugin enregistre votre nom de package, SHA-1 de signature et un masqué webClientId Vous pouvez les comparer avec le console Google Cloud.

Vous avez besoin de deux types d'identifiants OAuth 2.0 dans le même projet Google Cloud :

Type de clientUtilisé pourOù cela va
Application webServeur / audience d'ID de jetonwebClientId en SocialLogin.initialize()
sur Android, un par clé de signatureVérifiez que votre APK est autorisé à appeler Googleseul disponible dans le Google Cloud Console. N'envoyez pas cet ID à webClientId

Une erreur fréquente est d'utiliser l'ID du client Android comme webClientIdLe gestionnaire de credenciaux nécessite l'ID client Web là. Le client Android n'a besoin que du nom de package correct et de la SHA-1 enregistrés dans le console.

Créez un client OAuth Android pour chaque certificat qui signe les builds que vous testez :

  • Débogage : depuis ./gradlew signingReport pour la variante de débogage.
  • Lancement : à partir de l'APK ou de l'AAB que vous installez réellement.
  • Play App Signing : à partir du console de Play > Intégrité de l'application > Clé de signature de l'application. Cela est requis pour les builds de magasin Play même si votre SHA-1 de clé d'upload est déjà enregistré.

Le applicationId in android/app/build.gradle doit exactement correspondre au nom de package Android OAuth, y compris tout suffixe. .debug suffix.

If the OAuth consent screen is in Testing mode, add every Google account you test with under Audience > Test users. Publishing the app to Production is not required for email et profile scopes. Liens d'actifs numériques (assetlinks.json) ne sont pas requis pour le connexion avec Google via Gestionnaire de credenciaux.

Les modifications de Cloud Google peuvent prendre jusqu'à quelques heures pour se propager.

Erreur 28444 : Le console de développeur n'est pas configuré correctement

Erreur 28444 : Le console de développeur n'est pas configuré correctement

Cela signifie généralement que Google a rejeté la combinaison du certificat de signature APK installé, du nom de package et de webClientIdTravaillez à travers ce checklist :

  1. Confirmer webClientId est l'ID du client de l'application Web et se termine par .apps.googleusercontent.com.
  2. Démarrez l'application, reproduisez l'erreur et lisez Logcat pour GoogleProvider, signingSha1=, et package=.
  3. Dans Google Cloud Console > Identifiants, ouvrez votre client OAuth Android et vérifiez le nom de package exact et la valeur SHA-1.
  4. Si vous testez une version de production, enregistrez la clé SHA-1 de cette version, et non seulement le keystore de débogage.
  5. Si l'application est distribuée via Google Play Store, enregistrez également la valeur SHA-1 de l'application de signature Play.
  6. Assurez-vous que les clients Web et Android soient dans le même projet Google Cloud.
  7. Si l'écran de consentement est en mode Test, confirmez que l'utilisateur Google est un utilisateur de test.
  8. Wait and retry after console changes.

USER_CANCELLED after picking an account on a misconfigured debug build can still be a SHA-1 or client ID mismatch. Fix the console setup above first.

Extrayez la SHA-1 de l'installation de la build

Extraire la SHA-1 de la build que vous installez

Mises en œuvre de débogage ou locales :

Fenêtre de terminal
cd android && ./gradlew signingReport

APK de version finale :

Fenêtre de terminal
keytool -printcert -jarfile android/app/release/app-release.apk

Ajoutez cette SHA-1 à un client OAuth Android avec le nom de package correspondant, réinstallez la même APK signée et testez à nouveau :

Fenêtre de terminal
adb install android/app/release/app-release.apk

Les jetons sont encapsulés sous result:

const login = await SocialLogin.login({ provider: 'google' });
const idToken = login.result?.idToken;

Pour Firebase Auth, créez des informations d'identification avec cela idToken et utilisez l'ID du client Web comme webClientId dans initialize.

Si vous ne pouvez pas obtenir le certificat SHA-1 de développement, essayez un keystore personnalisé. ce commentaire d'incident Continuez de la section Google Login sur Android

Continuez depuis l'authentification Google sur Android

Section intitulée “Continuez avec Google Login sur Android”

Si vous utilisez Google Login sur Android pour planifier l'authentification et les flux de compte, connectez-l’avec Utilisation de @capgo/capacitor-social-login pour le détail d'implémentation dans Utilisation @capgo/capacitor-social-login, Utilisation @capgo/capacitor-social-login pour le détail d'implémentation dans @capgo/capacitor-social-login, Utilisation @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, Utilisation @capgo/capacitor-native-biometric pour le détail d'implémentation dans @capgo/capacitor-native-biometric, et L'authentification à deux facteurs pour les détails d'implémentation dans l'authentification à deux facteurs.