Hoy vamos a ver como integrar google play services en nuestra app movil para conseguir ver como hacer un login con google en android a nuestros usuarios de esta plataforma y agilizar el proceso de inicio de sesion o registro a nuestra app. Obtendremos desde su perfil de Google su nombre, email y url de imagen de perfil (realmente se pueden obtener mucha información más) ¿Estas por iniciar una app movil? ¿Ofreceras un sistema de inicio de sesion? Deja de ofrecer aburridos y complejos sistemas de login y comienza a utilizar las redes sociales, ¿Te animas?
Asegurate de que cuentas con google play services sdk
Lo primero es asegurarnos de que contamos con el extra de google play services instalado.
Dentro de nuestro android studio vamos a Tools -> Android -> Sdk manager -> en la pestaña SDK Tools nos vamos a la seccion Extras y nos aseguramos que Google play services este instalado, sino procedemos a instalarlo para poder continuar.

Como hacer un Login con google en android con google play services
Instalamos las dependencias necesarias
Editamos el build.gradle de nuestro proyecto y agregamos el siguiente codigo:

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.
Udemybuildscript { dependencies { classpath 'com.google.gms:google-services:1.5.0-beta2' } }
Ahora editamos el build.gradle de nuestro modulo y agregamos lo siguiente:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.google.android.gms:play-services-auth:8.3.0' }
Ahora tenemos que crear una app en google console para enlazar nuestra app.
Crear una app de google para conectar tu app
Antes que nada tenemos que ir a https://developers.google.com/mobile/add?platform=android escribimos un nombre de la app y el nombre de paquete que estamos utilizando por ejemplo: com.misuperaplicacion.app.
Despues damos click sobre el boton Continue to Choose and configure services

Como hacer un Login con google en android creando nuestra app
Ahora elegimos la opcion Google sign-in y nos pedira ingresar una clave hash SHA1, para conseguirla deberemos ejecutar el siguiente comando en nuestro cmd:
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore > sha.txt
Notas:
- La contraseña por defecto del almacen de claves es: android
- La herramienta keytool se encuentra en el directorio bin de la instalacion del jdk en nuestro equipo
- El almance de claves se encuentra en c -> usuarios -> tuusuario -> .android -> debug.keystore.
Este comando nos generará un archivo de texto llamado sha.txt donde al abrirlo debemos de copiar la linea correspondiente al SHA1 y pegarlo en nuestra app en google console.
Una vez hecho esto presionamos sobre el boton Generate Configuration Files para poder descargar un archivo google-services.json que debemos de incluir en nuestra carpeta app de nuestro proyecto.
Creando el boton de login en nuestra app
Lo siguiente que tenemos que hacer es crear un boton de login en nuestra app, el siguiente codigo lo realizará:
<com.google.android.gms.common.SignInButton android:id="@+id/logingoogle" android:layout_width="match_parent" android:layout_height="wrap_content" />
Fácil! ¿no?
Como hacer un login con google en android – Integrando todo
Enlazamos a nuestro boton:
logingoogle = (SignInButton) findViewById(R.id.logingoogle);
creamos el codigo de accion de nuestro boton:
logingoogle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { signInWithGoogle(); } });
El metodo signInWithGoogle es como sigue:
private static final int RC_SIGN_IN = 9001; private void signInWithGoogle() { if(mGoogleApiClient != null) { mGoogleApiClient.disconnect(); } GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); final Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); }
Por ultimo en nuestro onActivityResult:
if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if(result.isSuccess()) { final GoogleApiClient client = mGoogleApiClient; GoogleSignInAccount profile = result.getSignInAccount(); // get profile information String name = ""; String email = ""; String uriPicture = ""; if (profile.getDisplayName() != null) { name = profile.getDisplayName(); } if (profile.getEmail() != null) { email = profile.getEmail(); } if (profile.getPhotoUrl() != null) { uriPicture = profile.getPhotoUrl().toString(); } // save profile information to preferences SharedPreferences prefs = getSharedPreferences("com.misuperapp.app", Context.MODE_PRIVATE); prefs.edit().putString("com.misuperapp.app.nombre", name).apply(); prefs.edit().putString("com.misuperapp.app.email", email).apply(); prefs.edit().putString("com.misuperapp.app.uriPicture", uriPicture).apply(); // redirect to map screen startActivity(new Intent(Registro.this, Main.class)); } else { // Otros result de actividades de inicio de session como facebook o twitter }
Como puedes ver al iniciar sesion un usuario en nuestra app nos traemos desde su perfil en Google su nombre, email y url de foto de perfil para utilizarlos en nuestra aplicacion movil, toda esta informacion se encuentra en result.getSignInAccount.
Posteriormente guardamos esta info en sharedpreferences de android y lo mandamos a la pantalla principal de la app ya con sesion.
Cualquier duda o inquietud no dudes en dejarme un comentario y con todo gusto lo resolvemos.
Saludos!