Google Login en Android
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Introducción
Sección titulada “Introducción”En esta guía, aprenderás a configurar Google Login con Capgo Social Login para Android. Asumo que ya has leído la guía de configuración general.
Uso de Google login en Android
Sección titulada “Uso de Google login en Android”En esta parte, aprenderás a configurar Google login en Android.
-
Crear un client ID de Android.
-
Haz clic en la barra de búsqueda
-
Busca
credentialsy haz clic en elAPIs and Servicesuno (el número 2 en la captura)
-
Haz clic en el
create credentials
-
Selecciona
OAuth client ID
-
Selecciona el
Androidtipo de aplicación
-
Abrir Android Studio
-
En la parte inferior del navegador, busca la
Gradle Scripts
-
Busca
build.gradlepara el móduloapp
-
Copia el
android.defaultConfig.applicationId. Este será tupackage nameen la consola de Google
-
Ahora, abre la terminal. Asegúrate de estar en la
androidcarpeta de tu app y ejecuta./gradlew signInReport
- Desplázate hasta el inicio de este comando. Deberías ver lo siguiente. Copia el
SHA1.
- Ahora, vuelve a la Google Console. Introduce tu
applicationIdcomo elPackage Namey tu SHA1 en el campo del certificado y haz clic encreate
-
-
Crea un cliente web (esto es necesario para Android)
-
Ve a la pestaña
Create credentialspágina en Google Console -
Establece el tipo de aplicación en
Web
-
Haz clic
Create
-
Copia el client ID, lo usarás como el
webClientIden tu code de JS/TS
-
-
Modifica tu
MainActivity-
Abre tu app en Android Studio. Puedes ejecutar
cap open android -
Busca
MainActivity.java-
Abre la
appcarpeta
-
Busca
java
-
Busca tu
MainActivity.javay haz clic en él
-
-
Modificar
MainActivity.java. Por favor, añade el siguiente 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() {}} -
Guardar el archivo
-
-
Usa Google Login en tu aplicación
-
Primero, importa
SocialLoginimport { SocialLogin } from '@capgo/capacitor-social-login'; -
Llama a initialize. Solo debe llamarse una vez.
// 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',}})}) -
Llama a
SocialLogin.login. Crea un botón y ejecuta el siguiente code al hacer clic.const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
Configura el emulador para las pruebas
-
Entra en
Device managery haz clic en el botón más
-
Crea un dispositivo virtual
-
Selecciona cualquier dispositivo con un
Play Storeicono
Como puedes ver,
pixel 8soporta losPlay Storeservicios -
Haz clic
next
-
Asegúrate de que la imagen del SO sea de tipo
Google Play. DEBE ser de tipoGoogle Play
-
Click next
-
Confirma tu dispositivo. Puedes nombrar tu emulador como prefieras
-
Entra en
Device Managery arranca tu simulador
-
Una vez que arranque el simulador, entra en sus ajustes
-
Entra en
Google Play
- Haz clic
Updatey espera unos 60 segundos
-
-
Prueba tu aplicación
Si lo has hecho todo correctamente, deberías ver el flujo de login de Google funcionando:
Solución de problemas
Sección titulada “Solución de problemas”Si tienes algún problema, primero compara la configuración de tu app con los valores de Google Cloud Console. Los fallos de Google Sign-In en Android suelen deberse a que el package name, el SHA-1 o el client ID no coinciden.
Credential Manager, SHA-1 y Firebase
Sección titulada “Credential Manager, SHA-1 y Firebase”En Android, este plugin usa Google Credential Manager (androidx.credentials y Sign in with Google), no el antiguo GoogleSignInClient API. Los errores de Logcat como GetCredentialCustomException: [28444] Developer console is not set up correctly vienen de ese stack.
Filtra Logcat con GoogleProvider o CapgoSocialLogin tras un login fallido. El plugin registra tu package name, el SHA-1 de firma y un webClientId para que puedas compararlos con Google Cloud Console.
Configuración necesaria en Google Cloud
Sección titulada “Configuración necesaria en Google Cloud”Necesitas dos tipos de client IDs de OAuth 2.0 en el mismo proyecto de Google Cloud:
| Tipo de cliente | Para qué sirve | Dónde se ubica |
|---|---|---|
| Aplicación web | Audiencia del token de ID del servidor | webClientId en SocialLogin.initialize() |
| Android, uno por cada signing key | Demuestra que tu APK tiene permiso para llamar a Google | Solo en Google Cloud Console. No pases este ID a webClientId |
Un error común es usar el Android client ID como webClientId. Credential Manager requiere el Web client ID ahí. El cliente de Android solo necesita el package name y el SHA-1 registrados en la consola.
Crea un cliente OAuth de Android para cada certificado que firme los builds que pruebes:
- Debug: desde
./gradlew signingReportpara la variante de debug. - Release: desde el APK o AAB que instales realmente.
- Play App Signing: desde Play Console > App integrity > App signing key certificate. Esto es necesario para builds de la Play Store, incluso si tu SHA-1 de la upload key ya está registrado.
El applicationId en android/app/build.gradle debe coincidir exactamente con el package name del cliente OAuth de Android, incluyendo cualquier .debug sufijo.
Si la pantalla de consentimiento de OAuth está en modo Testing, añade cada cuenta de Google con la que pruebes en Audience > Test users. No es necesario publicar la app en Production para email y profile scopes. Digital Asset Links ("assetlinks.json) no son necesarios para Sign in with Google mediante Credential Manager.
Los cambios en Google Cloud pueden tardar unas horas en propagarse.
Error 28444: La consola de desarrollador no está configurada correctamente
Sección titulada “Error 28444: La consola de desarrollador no está configurada correctamente”Esto casi siempre significa que Google rechazó la combinación del certificado de firma del APK instalado, el nombre del paquete y webClientId. Sigue esta lista de verificación:
- Confirmar
webClientIdes el client ID de la aplicación web y termina con.apps.googleusercontent.com. - Ejecuta la app, reproduce el error y revisa Logcat para
GoogleProvider,signingSha1=, ypackage=. - En Google Cloud Console > Credenciales, abre tu cliente OAuth de Android y verifica el package name y el SHA-1 exactos.
- Si pruebas un release build, registra el SHA-1 de esa build, no solo el del debug keystore.
- Si la app se distribuye por Play Store, registra también el SHA-1 de Play App Signing.
- Asegúrate de que los clientes de Web y Android estén en el mismo proyecto de Google Cloud.
- Si la pantalla de consentimiento está en Testing, confirma que la cuenta de Google sea un test user.
- Wait and retry after console changes.
USER_CANCELLED tras elegir una cuenta en un debug build mal configurado, puede seguir habiendo un error de SHA-1 o client ID. Primero corrige la configuración de la consola.
Extrae el SHA-1 de la build que instales
Sección titulada “Extract SHA-1 from the build you install”Builds de debug o locales:
cd android && ./gradlew signingReportAPK de release firmada:
keytool -printcert -jarfile android/app/release/app-release.apkAñade ese SHA-1 a un cliente OAuth de Android con el package name correspondiente, reinstala la misma APK firmada y vuelve a probar:
adb install android/app/release/app-release.apkLectura del resultado de login
Sección titulada “Lectura del resultado de login”Los tokens están anidados bajo result:
const login = await SocialLogin.login({ provider: 'google' });const idToken = login.result?.idToken;Para Firebase Auth, crea las credenciales con eso idToken y usa el Web client ID como webClientId en initialize.
Si no puedes obtener el certificado SHA-1 de desarrollo, intenta con un keystore personalizado. Este comentario en el issue explica cómo añadir un keystore a tu proyecto.
Continuar con Google Login en Android
Sección titulada “Continuar con Google Login en Android”Si estás usando Google Login en Android para planificar los flujos de autenticación y de cuenta, conéctalo con Uso de @capgo/capacitor-social-login para la capacidad nativa en el uso de @capgo/capacitor-social-login, @capgo/capacitor-social-login para los detalles de implementación en @capgo/capacitor-social-login, @capgo/capacitor-passkey para el detalle de implementación en @capgo/capacitor-passkey, @capgo/capacitor-native-biometric para el detalle de implementación en @capgo/capacitor-native-biometric, y Autenticación de dos factores para el detalle de implementación en la autenticación de dos factores.