Continua da qui: Login 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. Configurazione generale.
Utilizzo dell'accesso Google su Android
Sottosezione intitolata “Utilizzo dell'accesso Google su Android”In questo capitolo, imparerai a configurare l'accesso Google in Android.
-
Creare un ID del client Android.
-
Clicca sulla barra di ricerca
-
Cerca
credentialse clicca sullaAPIs and Servicesuna (numero 2 nell'immagine di screenshot)
-
Clicca sulla
create credentials
-
Scegli
OAuth client ID
-
Scegli il
AndroidTipo di applicazione
-
Apre Android Studio
-
Al fondo del navigatore, trova la
Gradle Scripts
-
Cerca
build.gradleper il moduloapp
-
Copia il
android.defaultConfig.applicationIdQuesto sarà il tuopackage namein Google console
-
Ora, apri il terminale. Assicurati di essere nella
androidcartella della tua app e esegui./gradlew signInReport
- Esegui lo scorrimento verso l'alto di questo comando. Dovresti vedere il seguente. Copia il
SHA1.
- Ora, torna indietro alla 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 alla
Create credentialspagina nella Console di Google -
Imposta il tipo di applicazione a
Web
-
Clicca
Create
-
Copia l'ID del client, utilizzerai questo come il
webClientIdin tuo JS/TS code
-
-
Modifica il tuo
MainActivity-
Per favore apri il tuo app in Android Studio. Puoi eseguire
cap open android -
Cerca
MainActivity.java-
Apre il
appcartella
-
Trova
java
-
Trova il tuo
MainActivity.javae cliccaci sopra
-
-
Modifica
MainActivity.javaaggiungi 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',}})}) -
Chiamare
SocialLogin.loginCrea un bottone e esegui il seguente code al click.const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
Configura l'emulatore per le prove
-
Entrare in
Device managere cliccare sul pulsante più
-
Creare un dispositivo virtuale
-
Scegliere 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 di tipoGoogle Play
-
Clicca prossimo
-
Conferma il tuo dispositivo. Puoi chiamare il tuo emulatore come preferisci
-
Accedi
Device Managere avvia il tuo simulatore
-
Dopo il boot del simulatore, accedi alle sue impostazioni
-
Accedi a
Google Play
- Clicca
Updatee attendi circa 60 secondi
-
-
Testa la tua applicazione
Se hai fatto tutto correttamente, dovresti vedere il flusso di login Google che funziona correttamente:
Troubleshooting
Sezione intitolata “Risolvere i problemi”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.
Manager delle credenziali, SHA-1 e Firebase
Sezione intitolata “Manager delle credenziali, SHA-1 e Firebase”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.
Configurazione Google Cloud obbligatoria
Sottosezione intitolata “Configurazione Google Cloud obbligatoria”Avete bisogno di due tipi di ID client OAuth 2.0 nello stesso progetto Google Cloud:
| Tipo di client | Utilizzato per | Where it goes |
|---|---|---|
| Applicazione web | Audience del token ID / server | webClientId in SocialLogin.initialize() |
| Android, uno per chiave di firma | Prova che il tuo APK è autorizzato a chiamare Google | Console 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 signingReportper 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:
- Conferma
webClientIdè il client ID dell'applicazione web e si conclude con.apps.googleusercontent.com. - Esegui l'app, riproduci l'errore e leggi Logcat per
GoogleProvider,signingSha1=, epackage=. - In Google Cloud Console > Credenziali, apri il tuo client OAuth Android e verifica il nome del pacchetto esatto e il SHA-1.
- Se stai testando un rilascio, registra l'hash SHA-1 di quel rilascio, non solo il keystore di debug.
- Se l'app è distribuita attraverso Play Store, registrare 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 Testing, conferma che l'account Google è un utente di test.
- 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 installiVersioni di debug o locali:
cd android && ./gradlew signingReportAPK di rilascio firmata:
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”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.