Saltare al contenuto

Accesso Google su Android

GitHub

In questo guide, imparerai a configurare l'accesso Google con Capgo Social Login per Android. Assumo che tu abbia già letto la guida di configurazione generale.

In questa parte, imparerai a configurare l'accesso Google in Android.

  1. Creare un ID del client Android.

    1. Cliccare sulla barra di ricerca

      Barra di ricerca di Google Console
    2. Cerca credentials e clicca sul APIs and Services uno (numero 2 nella schermata)

      Risultati della ricerca mostranti l'opzione credenziali con API e Servizi evidenziati
    3. Clicca sul create credentials

      Pulsante di creazione di credenziali in Google Console
    4. Seleziona OAuth client ID

      L'opzione ID client OAuth nella menu di creazione di credenziali
    5. Seleziona il Android tipo di applicazione

      Selezione del tipo di applicazione con l'opzione Android evidenziata
    6. Apri Android Studio

    7. Nella parte inferiore del navigatore, trova il Gradle Scripts

      Sezione dei script Gradle nella navigazione del progetto di Android Studio
    8. Cerca build.gradle per il modulo app

      il file build.gradle (modulo: app) nella sezione dei script Gradle
    9. Copia il android.defaultConfig.applicationIdQuesto sarà il tuo package name nel console di Google

      Il file Build.gradle mostrando la configurazione di applicationId
    10. Ora, apri il terminale. Assicurati di essere nel android cartella del tuo app e esegui ./gradlew signInReport

    Terminal che mostra il comando gradlew signInReport
    1. Scorri verso l'alto di questo comando. Dovresti vedere il seguente. Copia il SHA1.
    Terminal output che mostra il fingerprint del certificato SHA1
    1. Ora, torna al Console di Google. Inserisci il tuo applicationId come il Package Name e il tuo SHA1 nel campo del certificato e clicca create
    Forma di creazione del client Android con campo del nome del pacchetto e SHA1 compilati
  2. Creare un client web (questo è richiesto per Android)

    1. Vai al Create credentials pagina nel Console di Google

    2. Imposta il tipo di applicazione su Web

      Selezione del tipo di applicazione con opzione Web evidenziata
    3. Clicca Create

      Forma di creazione del client web con pulsante Crea in fondo
    4. Copia l'ID del client, lo utilizzerai come il webClientId in il tuo JS/TS code

      Dettagli dell'ID del client web per copiare
  3. Modifica il tuo MainActivity

    1. Per favore apri il tuo app in Android Studio. Puoi eseguire cap open android

    2. Trova MainActivity.java

      1. Apri il app cartella

        Cartella dell'app in navigatore del progetto di Android Studio
      2. Trova java

        cartella Java in struttura del progetto Android Studio
      3. Trova il tuo MainActivity.java e clicca su di esso

        file MainActivity.java nella struttura del pacchetto
    3. Modifica MainActivity.javaPer favore aggiungi il seguente 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. Salva il file

  4. Utilizza il login di Google nella tua applicazione

    1. In primo luogo, importa SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. Chiamare initialize. Questo dovrebbe essere chiamato solo una volta.

      // 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. Chiamata SocialLogin.login. Crea un pulsante e esegui il seguente code al click.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. Copiarlo nel portapenne

    1. Accedi e clicca sul pulsante plus Device manager e clicca sul pulsante plus

      Gestione dispositivi in Android Studio con pulsante plus evidenziato
    2. Crea un dispositivo virtuale

      Pulsante Crea Dispositivo Virtuale nella Configurazione del Dispositivo Virtuale
    3. Seleziona qualsiasi dispositivo con un Play Store icona

      Selezione hardware che mostra dispositivi con supporto per il negozio Play

      Come puoi vedere, il pixel 8 supporta i Play Store servizi

    4. Clicca next

      Pulsante successivo nel wizard di creazione del dispositivo
    5. Assicurati che l'immagine del sistema sia del tipo Google Play. DEVE ESSERE deve essere Google Play

      Schermo di selezione dell'immagine del sistema con immagini di tipo Google Play
    6. Clicca su next

      Pulsante successivo nello schermo di selezione dell'immagine del sistema
    7. Conferma il tuo dispositivo. Puoi scegliere un nome per il tuo emulatore

      Schermo di verifica della configurazione del dispositivo con pulsante di fine
    8. Accedi a Device Manager e avvia il tuo simulatore

      Gestore dispositivi con dispositivo virtuale elencato e pulsante di riproduzione
    9. Dopo che il simulatore si è avviato, accedi alle sue impostazioni

      Emulatore Android che mostra l'app Impostazioni
    10. Accedi a Google Play

    Pantalla Impostazioni con opzione Google Play
    1. Clicca Update e attendi circa 60 secondi
    Pantalla di aggiornamento Google Play con pulsante Aggiorna
  6. Verifica il tuo applicativo

    Se hai fatto tutto correttamente, dovresti vedere il flusso di login Google che funziona correttamente:

    Demo del flusso di login Google su Android che mostra il processo di accesso e l'autenticazione riuscita

Se hai problemi, confronta per primo la configurazione dell'app con i valori del Console di Google Cloud.

Le fallite di Google Sign-In su Android sono di solito causate da un nome del pacchetto, SHA-1 o ID client non corrispondenti.

Gestore delle credenziali, SHA-1 e Firebase

Sezione intitolata “Gestore delle credenziali, SHA-1 e Firebase”androidx.credentials Su Android, questo plugin utilizza il Gestore delle credenziali di Google ( GoogleSignInClient API. Logcat errors such as GetCredentialCustomException: [28444] Developer console is not set up correctly __CAPGO_KEEP_0__. Gli errori di Logcat come

provengono da quella pila. GoogleProvider Filtra Logcat con CapgoSocialLogin o webClientId dopo un fallito accesso. Il plugin registra il nome del pacchetto, il SHA-1 di firma e un

così puoi confrontarli con quelli del Console di Google Cloud.

Sezione intitolata “Configurazione Cloud Google obbligatoria”

Hai bisogno di due tipi di ID client OAuth 2.0 nello stesso progetto Cloud Google:

Tipo di clientUtilizzato perDove va
Applicazione webPubblico / ID token destinatariowebClientId in SocialLogin.initialize()
Nell'Android, uno per chiave di firmaProva che il tuo APK è autorizzato a chiamare GoogleSolo nel Cloud Console di Google. Non passare questo ID a webClientId

Un errore comune è utilizzare l'ID client Android come webClientId. Il Manager delle credenziali richiede l'ID del client Web lì.

Crea un client OAuth Android per ogni certificato che firma le build che testi:

  • Debug: da ./gradlew signingReport per la variante di debug.
  • Release: dal APK o AAB che effettivamente si installa.
  • Play App Signing: dal Console di Play > Integrità dell'app > Certificato di firma dell'app. Ciò è richiesto per le build di Play Store anche se il SHA-1 della chiave di caricamento è già registrato.

Il applicationId in android/app/build.gradle deve esattamente corrispondere al nome del pacchetto del client OAuth Android, compresi eventuali .debug suffisso.

Se lo schermo di consenso OAuth è in modalità Testing, aggiungi ogni account Google che testi sotto Audience > Utenti di test. La pubblicazione dell'app in Produzione non è richiesta per email e profile Scopi. Collegamenti di asset digitale (assetlinks.json) non sono richiesti per l'accesso con Google tramite Gestore delle credenziali.

I cambiamenti di Google Cloud possono richiedere fino a poche ore per propagarsi.

Errore 28444: Console dello sviluppatore non è configurata correttamente

Sezione intitolata “Errore 28444: Console dello sviluppatore non è configurata correttamente”

Ciò accade quasi sempre significa che Google ha rifiutato la combinazione del certificato di firma APK installato, nome del pacchetto e webClientIdPassa attraverso questo checklist:

  1. Conferma webClientId è l'ID del client dell'applicazione web e si conclude con .apps.googleusercontent.com.
  2. Esegui l'app, riproduci il fallimento e leggi Logcat per GoogleProvider, signingSha1=, e package=.
  3. In Google Cloud Console > Credenziali, apri il tuo client OAuth Android e verifica l'esatta denominazione del pacchetto e il SHA-1.
  4. Se stai testando un build di rilascio, registra il SHA-1 di quel build, non solo il keystore di debug.
  5. Se l'app è distribuita attraverso Play Store, registra anche il SHA-1 di firma dell'app di Play.
  6. Assicurati che i client Web e Android siano presenti nello stesso progetto Google Cloud.
  7. Se lo schermo di consenso è in modalità Testing, conferma che l'account Google sia un utente di test.
  8. Aspetta e riprova dopo le modifiche al console.

USER_CANCELLED Dopo aver selezionato un account su un build di debug configurato in modo errato, può ancora esserci un mismatch di SHA-1 o ID client. Correggi prima la configurazione del console sopra.

Build di debug o locali:

Finestra del terminale
cd android && ./gradlew signingReport

Rilascio firmato APK:

Finestra del terminale
keytool -printcert -jarfile android/app/release/app-release.apk

Aggiungi quel SHA-1 a un client OAuth Android con lo stesso nome del pacchetto, reinstalla lo stesso APK firmato, e testa nuovamente:

Finestra del terminale
adb install android/app/release/app-release.apk

Gli token sono nidificati sotto result:

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

Per Firebase Auth, crea le credenziali con quello idToken e utilizza l'ID del client Web come webClientId in initialize.

Se non riesci ad ottenere il certificato SHA-1 di sviluppo, prova un keystore personalizzato. Questo commento di issue spiega come aggiungere un keystore al tuo progetto.

Continua da Google Login su Android

Se stai utilizzando

Google Login su Android per pianificare l'autenticazione e le flussi di account, connettilo con Utilizza @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-login-social per la capacità nativa in Utilizza @capgo/capacitor-login-social per la capacità nativa in Utilizza @capgo/capacitor-login-social @capgo/capacitor-login-social per i dettagli di implementazione in @capgo/capacitor-login-social @capgo/capacitor-passkey per i dettagli di implementazione in @capgo/capacitor-passkey @capgo/capacitor-autenticazione-biometrica-nativa per i dettagli di implementazione in @capgo/capacitor-autenticazione-biometrica-nativa, e Autenticazione a due fattori per i dettagli di implementazione in Autenticazione a due fattori