Vamos a seguir un CodeLab vinculado a Google Identity Platform que se enseña a utilizar algunos google-services para autenticarse a través del perfil, o la cuenta de Google.
Específicamente, vamos a ver como se hace esto en aplicaciones Android, aunque el mismo Codelab explica como obtener los mismos resultados para iOS y WEB.
Los links son los siguientes:
Comencemos
Directorio de trabajo:
/Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/google-services
Clonamos el proyecto de:
Paso 01: Abrir con Adndroid Studio
Abrimos la aplicación
/Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/google-services/android/signin
Observamos que con la primera compilación, nos aparece el siguiente error, producto la aplicación no está integrada aún a los servicios de Google:
Para solucionar esto, debemos generar un archivo de configruación llamado google-services.json
En la siguiente consola https://developers.google.com/mobile/add, elegimos la plataforma Android:
Le damos el nombre y el package a nuestra aplicación:
Le damos siguiente para obtener el google-services.json que estamos buscando:
Paso 02: Obtener nuestra clave SHA-1 de “Huella Digital”
Tal como dice, tenemos que obtener nuestra clave SHA-1, para utilizarla en el sign-in.
Tenemos dos links que nos ayudan a entender la parte teorica de este paso:
Vamos a resumir de forma muy brebe y poco exacta los conceptos de estos artículos. a) La clave “sha-1” nos sirve como una “fingerprint” o “huella digital” de nuestra aplicación mobil. Con lo cual, para futuras update de la aplicación, Google se da cuenta que se trata de la misma app porque tiene la misma “huella digital”
b) El Keystore para almacenar la huella digital puede ser para utilizarse en desarrollo o para producción. Si es para producción, después va a ser importante que ese keystore que almacena la huella, no lo perdamos… ni olvidemos donde esta, porque lo vamos a necesitar el día que quisieramos hacer un update de la app.
c) Si el keystore es para debug, podemos utiizar el que nos viene con Android, usualmente en nuestra home ~/.android/debug.keystore. Recordemos también que en ese repositorio de debug, tal como es de publico conocimiento, la clave que nos pide para abrir el ~/.android/debug.keystore es android.
El keystore de debug ~/.android/debug.keystore es el que vamos a ejecutar en este ejercicio:
d) Repasando el comando keytool con algunos ejemplos básicos, en las distintas variantes vemos que aparece la clave del SHA-1 que actúa como nuestra “huella digital” o “fingerprint”, y que necesitamos para obtener a google-services.json
Listando el certificado con keytool -list: (Se puede agregar -v de verbose):
Acabamos de ver el contenido del keystore. Vamos a ejectar la variante que nos sugieren en el CodeLab: Donde también nos muestra la clave SHA-1:
Paso 03: Ingresar nuestra clave SHA-1 de “Huella Digital” y obtener google-services.json
Ahora que ya sabemos cual el nuestra “Huella Digital” SHA-1 vamos a cargarla para habiliar el paso del registro de Google sign-in para nuestra app:
Paso siguiente Enable Google sign-in:
Y finalemnte podemos descargar el archivo google-services.json que teníamos que agregar al proyecto del Android Sudio de inicio del post:
Paso 04: Copiar google-services.json al proyecto
Copiamos el archivo google-services.json dentro de ../googlesamples/google-services/android/signin/app
Y por fin! podemos compilar… pero aún no podemos ejecutar la aplicación de ejemplo de google sign-in para android:
El error que nos da es Sign-In quickstart won´t run unless you update Google Play Services
Cabe recordar que estoy ejecutando el ejercicio en un emulador, no en dispositivo fisico
Además el Emulador es el de Android Studio
Solucion:
Para el ejercicio, baje al versión en el build.gradle (app) y anduvo ok:
// Dependency for Google Sign-In
// compile 'com.google.android.gms:play-services-auth:9.2.0'
compile 'com.google.android.gms:play-services-auth:9.0.0'
Aunque me anduvo recién después de agregar la KEY en string.xml
que es el paso que se hace mas adelante.
Links interesantes sobre el tema de Google Play:
Paso 05: “Create a web client ID for your server”
En nuestro paso 05 vamos a seguir el paso 4 del turorial que estamos siguiendo:
Tiene de título “Create a web client ID for your server”, que no termino de entender que tiene que ver un web client, con un cliente Android… pero bueno, contnuamos con un paso (…mas…) de fe hacia la siguiente indicación:
Para esto, tenemos que ir a la consola de developers y elegir a nuestra aplicación:
Seleccionamos nuestra aplicación, y tenemos habilitadas nuestras credenciales:
Nota: La parte IDs de cliente de OAuth 2.0 es la que necesitamos. La parte Claves de API la tenemos porque elegí de mas también habilitar la mensajería… pero para este post, ignoramos esa parte.
Bueno, según el “paso 4 del tutorial” debería hacer: 2. Click Add credentials > OAuth 2.0 client ID.
En el menú castellano que yo veo en mi consola, son los pasos:
Y elijo la parte web por recomendiación del tutorial: 3. Select Web application.
Después de presionar CREAR nos genera la clave de ID de cliente
Que copiamos dentro de string.xml del Android Studio:
Aunque si volvemos a ejecutar la App me da el mismo error de que tengo que actualzar el Google Play …
El error que nos da es Sign-In quickstart won´t run unless you update Google Play Services
Solución:
Bajar la versión dentro del **build.gradle** de la dependecia para Google Sign-In
// compile 'com.google.android.gms:play-services-auth:9.2.0'
compile 'com.google.android.gms:play-services-auth:9.0.0'
Y de esta forma, finalmente!! vemos a la aplicación funcionando:
Veamos algunas pantallas:
Iniciamos sesión con la cuenta de Google:
Nos pide la password. (Son pantallas de Google, no de nuestra app):
Aceptar TYC:
Y nos desconectamos
Con esto damos por cerrado el post de Google Sign In donde intentamos mostrar Como funciona la ‘Google Identity Platform’ en Android a través de nuestra experiencia siguiendo el ejemplo del CodeLab de GoogleSamples.