Accesso Google su Android
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Introduzione
Sottosezione intitolata “Introduzione”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.
Utilizzo dell'accesso Google su Android
Sottosezione intitolata “Utilizzo dell'accesso Google su Android”In questa parte, imparerai a configurare l'accesso Google in Android.
-
Creare un ID del client Android.
-
Cliccare sulla barra di ricerca
-
Cerca
credentialse clicca sulAPIs and Servicesuno (numero 2 nella schermata)
-
Clicca sul
create credentials
-
Seleziona
OAuth client ID
-
Seleziona il
Androidtipo di applicazione
-
Apri Android Studio
-
Nella parte inferiore del navigatore, trova il
Gradle Scripts
-
Cerca
build.gradleper il moduloapp
-
Copia il
android.defaultConfig.applicationIdQuesto sarà il tuopackage namenel console di Google
-
Ora, apri il terminale. Assicurati di essere nel
androidcartella del tuo app e esegui./gradlew signInReport
- Scorri verso l'alto di questo comando. Dovresti vedere il seguente. Copia il
SHA1.
- Ora, torna al Console di Google. Inserisci il tuo
applicationIdcome ilPackage Namee il tuo SHA1 nel campo del certificato e cliccacreate
-
-
Creare un client web (questo è richiesto per Android)
-
Vai al
Create credentialspagina nel Console di Google -
Imposta il tipo di applicazione su
Web
-
Clicca
Create
-
Copia l'ID del client, lo utilizzerai come il
webClientIdin il tuo JS/TS code
-
-
Modifica il tuo
MainActivity-
Per favore apri il tuo app in Android Studio. Puoi eseguire
cap open android -
Trova
MainActivity.java-
Apri il
appcartella
-
Trova
java
-
Trova il tuo
MainActivity.javae clicca su di esso
-
-
Modifica
MainActivity.javaPer favore aggiungi il seguente codeimport 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 {@Overridepublic 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@Overridepublic void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}} -
Salva il file
-
-
Utilizza il login di Google nella tua applicazione
-
In primo luogo, importa
SocialLoginimport { SocialLogin } from '@capgo/capacitor-social-login'; -
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',}})}) -
Chiamata
SocialLogin.login. Crea un pulsante e esegui il seguente code al click.const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
Copiarlo nel portapenne
-
Accedi e clicca sul pulsante plus
Device managere clicca sul pulsante plus
-
Crea un dispositivo virtuale
-
Seleziona qualsiasi dispositivo con un
Play Storeicona
Come puoi vedere, il
pixel 8supporta iPlay Storeservizi -
Clicca
next
-
Assicurati che l'immagine del sistema sia del tipo
Google Play. DEVE ESSERE deve essereGoogle Play
-
Clicca su next
-
Conferma il tuo dispositivo. Puoi scegliere un nome per il tuo emulatore
-
Accedi a
Device Managere avvia il tuo simulatore
-
Dopo che il simulatore si è avviato, accedi alle sue impostazioni
-
Accedi a
Google Play
- Clicca
Updatee attendi circa 60 secondi
-
-
Verifica il tuo applicativo
Se hai fatto tutto correttamente, dovresti vedere il flusso di login Google che funziona correttamente:
Risoluzione dei problemi
Sottosezione intitolata “Risoluzione dei problemi”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 FirebaseSezione 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 client | Utilizzato per | Dove va |
|---|---|---|
| Applicazione web | Pubblico / ID token destinatario | webClientId in SocialLogin.initialize() |
| Nell'Android, uno per chiave di firma | Prova che il tuo APK è autorizzato a chiamare Google | Solo 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 signingReportper 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:
- Conferma
webClientIdè l'ID del client dell'applicazione web e si conclude con.apps.googleusercontent.com. - Esegui l'app, riproduci il fallimento e leggi Logcat per
GoogleProvider,signingSha1=, epackage=. - In Google Cloud Console > Credenziali, apri il tuo client OAuth Android e verifica l'esatta denominazione del pacchetto e il SHA-1.
- Se stai testando un build di rilascio, registra il SHA-1 di quel build, non solo il keystore di debug.
- Se l'app è distribuita attraverso Play Store, registra anche il SHA-1 di firma dell'app di Play.
- Assicurati che i client Web e Android siano presenti nello stesso progetto Google Cloud.
- Se lo schermo di consenso è in modalità Testing, conferma che l'account Google sia un utente di test.
- 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.
Estrai il SHA-1 dal build che installi
Sezione intitolata “Estrai il SHA-1 dal build che installi”Build di debug o locali:
cd android && ./gradlew signingReportRilascio firmato APK:
keytool -printcert -jarfile android/app/release/app-release.apkAggiungi quel SHA-1 a un client OAuth Android con lo stesso nome del pacchetto, reinstalla lo stesso APK firmato, e testa nuovamente:
adb install android/app/release/app-release.apkLeggere il risultato di accesso
Sezione intitolata “Leggere il risultato di accesso”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 utilizzandoGoogle 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