Google Login su Android
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Introduzione
Sezione intitolata “Introduzione”In questo guide, imparerai a configurare il login con Google con Capgo Social Login per Android. Suppongo che tu abbia già letto la guida di configurazione generale.
Utilizzare il login con Google su Android
Sezione intitolata “Utilizzare il login con Google su Android”In questo capitolo, imparerai a configurare l'accesso Google su Android.
-
Crea un ID client Android.
-
Clicca sulla barra di ricerca
-
Cerca e clicca sul
credentialsuno (numero 2 nella schermata)APIs and ServicesRisultati della ricerca mostranti l'opzione credenziali con API e Servizi evidenziati
-
Crea credenziali nel Google Console
create credentials
-
Seleziona
OAuth client ID
-
Seleziona il
Androidtipo di applicazione
-
Apri Android Studio
-
In fondo alla finestra di navigazione, trova la
Gradle Scripts
-
Trova
build.gradleper il moduloapp
-
Copia il
android.defaultConfig.applicationId. Questo sarà il tuopackage namenel pannello di controllo 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 indietro al Pannello di controllo di Google. Inserisci il
applicationIdcome ilPackage Namee il tuo SHA1 nel campo del certificato e cliccacreate
-
-
Crea un client web (questo è richiesto per Android)
-
Vai alla
Create credentialspagina in Google Console -
Imposta il tipo di applicazione su
Web
-
Clicca
Create
-
Copia l'ID del client, utilizzerai questo come il
webClientIdnel tuo JS/TS code
-
-
Modifica il tuo
MainActivity-
Per favore apri il tuo app in Android Studio. Puoi eseguirlo
cap open android -
Trova
MainActivity.java-
Apri il
appcartella
-
Trova
java
-
Trova il tuo
MainActivity.javae clicca su di esso
-
-
Modifica
MainActivity.java. 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
-
-
Usa Google Login nel tuo applicativo
-
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.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))
-
-
Configura l'emulatore per le prove
-
Entrare
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 DI TIPO Selezione immagine del sistema che mostra immagini di tipo Google PlayGoogle Play
-
Il pulsante Next nella selezione dell'immagine del sistema
-
Conferma il tuo dispositivo. Puoi chiamare il tuo emulatore come preferisci
-
Entrare in
Device Managere avviare il tuo simulatore
-
Dopo che il simulatore si è avviato, entra nelle sue impostazioni
-
Entrare in
Google Play
- Clicca
Updatee attendi circa 60 secondi
-
-
Testa la tua applicazione
Se hai fatto tutto correttamente, dovresti vedere il flusso di accesso Google che funziona correttamente:
Risoluzione dei problemi
Sezione intitolata “Risoluzione dei problemi”Se hai problemi, confronta per primo la configurazione del tuo app con i valori del Cloud Console di Google. Le fallite di accesso Google su Android sono di solito causate da un nome del pacchetto, un SHA-1 o un ID client non corrispondenti.
Manager delle credenziali, SHA-1 e Firebase
Sezione intitolata “Manager delle credenziali, SHA-1 e Firebase”Su Android, questo plugin utilizza il Manager delle credenziali Google (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 provengono da quella pila.
Filtra Logcat con GoogleProvider o CapgoSocialLogin dopo un fallito accesso. Il plugin registra il nome del pacchetto, l'hash SHA-1 di firma e un indirizzo webClientId così che puoi confrontarli con il Console di Google Cloud.
Configurazione Cloud Google richiesta
Sottosezione intitolata “Configurazione Cloud Google richiesta”Sei necessari due tipi di ID client OAuth 2.0 nello stesso progetto di Google Cloud:
| Tipo di client | Utilizzato per | Dove va |
|---|---|---|
| Applicazione web | Server / destinazione ID token | webClientId In Android, uno per chiave di firma SocialLogin.initialize() |
| Prova che il tuo APK è autorizzato a chiamare Google | Google Cloud Console solo. Non passa questo ID a | Un errore comune è utilizzare l'ID del client Android come webClientId |
. Il Credential Manager richiede l'ID del client Web lì. Il client Android richiede solo il nome del pacchetto corretto e la SHA-1 registrata nella console. webClientIdCreare un client OAuth Android per ogni certificato che firma le build che testi:
Debug: da
- per la variante di debug.
./gradlew signingReportRelease: dal APK o AAB che effettivamente installi. - Play App Signing: da Play Console > Integrità dell'app > Chiave di firma dell'app. Ciò è richiesto per le build di Play Store anche se il SHA-1 della chiave di caricamento è già registrato.
- Le
Il applicationId In deve corrispondere esattamente al nome del pacchetto del client Android OAuth, compresi eventuali suffissi. android/app/build.gradle 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 è necessaria per .debug e gli ambiti di accesso. I Digital Asset Links (
) non sono necessari per l'accesso con Google tramite Credential Manager. email I cambiamenti di Google Cloud possono richiedere fino a poche ore per propagarsi. profile Errore 28444: Il console dello sviluppatore non è configurato correttamenteassetlinks.jsonSottosezione intitolata “Errore 28444: Il console dello sviluppatore non è configurato correttamente”
Questo accade quasi sempre quando Google rifiuta la combinazione del certificato di firma APK installato, del nome del pacchetto e di
. Esegui il seguente checklist:
e gli ambiti di accesso. I Digital Asset Links () non sono necessari per l'accesso con Google tramite Credential Manager. webClientIdI cambiamenti di Google Cloud possono richiedere fino a poche ore per propagarsi.
- 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 SHA-1.
- Se stai testando un build di rilascio, registra il SHA-1 da 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 vivano nello stesso progetto Google Cloud.
- Se lo schermo di consenso è in Testing, conferma che l'account Google sia un utente di test.
- Attendi e riprova dopo le modifiche al console.
USER_CANCELLED Dopo aver selezionato un account su una configurazione di debug non corretta, può ancora esserci un mismatch SHA-1 o ID client. Correggi la configurazione del console sopra.
Estrai SHA-1 dal build che installi
Sottosezione intitolata “Estrai SHA-1 dal build che installi”Costruzioni 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.apkLeggi il risultato dell'accesso
Sezione intitolata “Leggi il risultato dell'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 quello idToken e utilizza il client ID 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
Sezione intitolata “Continua da Google Login su Android”If you are using Google Login su Android per pianificare l'autenticazione e le flussi di account, connettilo con Usando @capgo/capacitor-login-sociale per la capacità nativa in Usando @capgo/capacitor-login-sociale, @capgo/capacitor-login-sociale per il dettaglio di implementazione in @capgo/capacitor-login-sociale, @capgo/capacitor-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-biometria-nativa per il dettaglio di implementazione in @capgo/capacitor-biometria-nativa, e Autenticazione a due fattori per i dettagli di implementazione nella autenticazione a due fattori.