Autenticación - Login con cuenta de Google para una aplicación Android con Android Studio



En este tutorial vamos a implementar la autenticación en nuestra App Android mediante una cuenta de Google.

   REQUISITOS   

  • Android Studio.
  • Google Play Services.

   Lo primero de todo es comprobar que tenemos instalados los servicios de Google. Para ello  nos vamos al SDK Manager y lo comprobamos, si no lo tenemos los instalamos.


 
   Después vamos a actualizar el build.gradle del proyecto y añadir lo siguiente en dependencies:

classpath 'com.google.gms:google-services:1.5.0-beta2'

   A continuación actualizamos el build.gradle pero de la app y en dependencies añadimos:

compile 'com.google.android.gms:play-services-auth:8.3.0'

Y arriba del todo también ponemos el plugin:

apply plugin: 'com.google.gms.google-services'

   Después de todo esto nos vamos a crear nuestro proyecto en las apis de la consola de google. Se hace en la siguiente dirección:

https://console.cloud.google.com/apis/

   Nos creamos un proyecto nuevo.



   Ahora nos vamos esta web de desarrollador de google:

https://developers.google.com/mobile/add



  Le damos a Pick Platform y después a Android App. Elegimos el nombre de la App que es la que hemos creado antes, en mi caso TestYoutube. También ponemos el nombre del paquete del proyecto que tenemos en Android Studio, en mi caso wilowi.testgoogleauth, y le damos a "choose and configure services"


   En la siguiente pantalla seleccionamos Google Sign-In. Ahora nos va a pedir el hash SHA-1 que tenemos que generar ( lo podéis ver en el video).
Para ello vamos a seguir la guía de Google:

https://developers.google.com/android/guides/client-auth

   Para este tutorial hemos creado la clave para debug. Cuando sea una app para publicarla la tenemos que generar después con la clave que no sea debug.
   Nos vamos a la consola y copiamos el código de la guía:


   Copiamos y la pegamos en la página que nos la pidió y pulsamos "Enable Google Sign-in". Por ultimo pulsamos en "Generate configuration files" y bajamos el json que se llama google-services.json

   Este json lo vamos a guardar en nuestro proyecto de Android Studio en app:

Ahora ya en nuestro proyecto nos podemos hacer el botón para la autenticación con Google y toda su funcionalidad.

Tener en cuenta si se utiliza la opción del token de Google ( que es lo más habitual ), hay que usar la función:

GoogleSignInOptions gso = 
new GoogleSignInOptions.Builder(
GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(c_id).requestEmail().build();

   Se necesita un código, el id en requestIdToken(c_id). Este código lo vamos a obtener de la primera página que hemos visto, donde hemos creado el proyecto (https://console.cloud.google.com/apis/). Le daremos a credenciales y a obtener credenciales y seguidamente Id de cliente OAuth 2.0.

   Nos pedirá el sha1 y el nombre del paquete como anteriormente. Importante, hay que utilizar la clave que pone "Web" no Android. Esta clave es la que copiaremos en el proyecto en la función anterior.

Os pongo el enlace para que os podáis descargar el proyecto y veáis todo el código hecho.