Saltare al contenuto

Continua da qui: Login 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. Configurazione generale.

In questo capitolo, imparerai a configurare l'accesso Google in Android.

  1. Creare un ID del client Android.

    1. Clicca sulla barra di ricerca

      Barra di ricerca di Google Console
    2. Cerca credentials e clicca sulla APIs and Services una (numero 2 nell'immagine di screenshot)

      I risultati della ricerca mostrano l'opzione dei credenziali con API e Servizi evidenziati
    3. Clicca sulla create credentials

      Tasto per creare credenziali in Google Console
    4. Scegli OAuth client ID

      L'opzione ID del client OAuth nella menu di creazione delle credenziali
    5. Scegli il Android Tipo di applicazione

      Scegli il tipo di applicazione con l'opzione Android evidenziata
    6. Apre Android Studio

    7. Al fondo del navigatore, trova la Gradle Scripts

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

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

      File build.gradle con la configurazione di applicationId
    10. Ora, apri il terminale. Assicurati di essere nella android cartella della tua app e esegui ./gradlew signInReport

    Terminal che mostra il comando gradlew signInReport
    1. Esegui lo scorrimento verso l'alto di questo comando. Dovresti vedere il seguente. Copia il SHA1.
    Output del terminale mostrando l'impronta del certificato SHA1
    1. Ora, torna indietro alla 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 alla Create credentials pagina nella Console di Google

    2. Imposta il tipo di applicazione a Web

      Scegli tipo di applicazione con opzione Web evidenziata
    3. Clicca Create

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

      Dettagli dell'ID del client mostrando l'ID del client Web da copiare
  3. Modifica il tuo MainActivity

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

    2. Cerca MainActivity.java

      1. Apre il app cartella

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

        cartella Java nella struttura del progetto di Android Studio
      3. Trova il tuo MainActivity.java e cliccaci sopra

        file MainActivity.java nella struttura dei pacchetti
    3. Modifica MainActivity.javaaggiungi 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. Chiamare SocialLogin.loginCrea un bottone e esegui il seguente code al click.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. Configura l'emulatore per le prove

    1. Entrare in Device manager e cliccare sul pulsante più

      Manager di dispositivi in Android Studio con pulsante più evidenziato
    2. Creare un dispositivo virtuale

      Crea dispositivo virtuale pulsante nella configurazione del dispositivo virtuale
    3. Scegliere qualsiasi dispositivo con un Play Store icona

      Selezione hardware dei dispositivi con supporto per il negozio Play

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

    4. Clicca next

      Next button in device creation wizard
    5. Assicurati che l'immagine del sistema sia del tipo Google Play. DEVE ESSERE di tipo Google Play

      Selezione dell'immagine del sistema che mostra immagini di tipo Google Play
    6. Clicca prossimo

      Next button in system image selection screen
    7. Conferma il tuo dispositivo. Puoi chiamare il tuo emulatore come preferisci

      Schermata di verifica della configurazione del dispositivo con pulsante Fine
    8. Accedi Device Manager e avvia il tuo simulatore

      Device Manager con dispositivo virtuale elencato e pulsante di riproduzione
    9. Dopo il boot del simulatore, accedi alle sue impostazioni

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

    Pantalla di impostazioni con opzione Google Play
    1. Clicca Update e attendi circa 60 secondi
    Pantalla di aggiornamento Google Play con pulsante Aggiorna
  6. Testa la tua applicazione

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

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

Se hai problemi, confronta per primo la configurazione del tuo app con i valori del Console di Google Cloud. Le fallite di Google Sign-In su Android sono spesso causate da un nome del pacchetto, SHA-1 o ID del client mismatch.

Utilizza il Manager delle credenziali di Google su Android.androidx.credentials e Accedi con Google), non il legacy GoogleSignInClient API. Gli errori di Logcat come GetCredentialCustomException: [28444] Developer console is not set up correctly vengono da quella pila.

Filtra Logcat con GoogleProvider o CapgoSocialLogin after a failed login. The plugin logs your package name, signing SHA-1, and a masked webClientId Potete confrontarli con il Console di Google Cloud.

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

Tipo di clientUtilizzato perWhere it goes
Applicazione webAudience del token ID / serverwebClientId in SocialLogin.initialize()
Android, uno per chiave di firmaProva che il tuo APK è autorizzato a chiamare GoogleConsole di Google Cloud solo. Non passare questo ID a webClientId

A un comune errore è utilizzare l'ID del client Android come webClientIdIl Manager delle credenziali richiede l'ID del client web in quel posto. Il client Android richiede solo il nome del pacchetto e lo SHA-1 registrati nella console.

Creare un client OAuth Android per ogni certificato che firma le build che si testano:

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

Il applicationId in android/app/build.gradle deve corrispondere esattamente al nome del pacchetto Android OAuth client, incluso eventuali .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 E e profile gli ambiti. I collegamenti di asset digitali (assetlinks.json) non sono richiesti per l'accesso con Google tramite il gestore delle credenziali.

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

Errore 28444: il console del developer non è configurato correttamente

Sottosezione intitolata “Errore 28444: il console del developer non è configurato correttamente”

Ciò accade quasi sempre perché Google ha rifiutato la combinazione del certificato di firma APK installato, del nome del pacchetto e webClientIdLavora attraverso questo elenco di controllo:

  1. Conferma webClientId è il client ID dell'applicazione web e si conclude con .apps.googleusercontent.com.
  2. Esegui l'app, riproduci l'errore e leggi Logcat per GoogleProvider, signingSha1=, e package=.
  3. In Google Cloud Console > Credenziali, apri il tuo client OAuth Android e verifica il nome del pacchetto esatto e il SHA-1.
  4. Se stai testando un rilascio, registra l'hash SHA-1 di quel rilascio, non solo il keystore di debug.
  5. Se l'app è distribuita attraverso Play Store, registrare 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 Testing, conferma che l'account Google è un utente di test.
  8. Attendere e riprovare dopo le modifiche al console.

USER_CANCELLED Dopo aver selezionato un account su una build di debug configurata male, può ancora esserci un disallineamento SHA-1 o ID client. Correggi prima la configurazione del console sopra.

Estrai l'hash SHA-1 dal build che installi

Estrai l'hash SHA-1 dal build che installi

Versioni di debug o locali:

Finestra del terminale
cd android && ./gradlew signingReport

APK di rilascio firmata:

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

I token sono nidificati sotto result:

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

Per Firebase Auth, crea le credenziali con questo idToken e utilizza il client ID Web come webClientId in initialize.

Se non riesci a ottenere il certificato SHA-1 di sviluppo, prova un keystore personalizzato. Questo commento di issue Continua da Google Login su Android

Sezione intitolata “Continua da Google Login su Android”

Sezione intitolata “Continua con Google Login su Android”

Google Login su Android Accesso Google su Android connettilo per pianificare l'autenticazione e i flussi di account Utilizzare @capgo/capacitor-login sociale per la capacità nativa in Utilizzare @capgo/capacitor-login-social, @capgo/capacitor-login-social per il dettaglio di implementazione in @capgo/capacitor-login-social, @capgo/capacitor-chiave di accesso per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-autenticazione-biometrica-nativa per il dettaglio di implementazione in @capgo/capacitor-autenticazione-biometrica-nativa, e Autenticazione a due fattori per il dettaglio di implementazione in Autenticazione a due fattori.