Añadir Iniciar Sesión con Google (GoogleSignIn) en tus APPs Android

Tiempo de lectura: 3 minutos

Os voy a enseñar a añadir el botón de Iniciar Sesión de Google para nuestras APPs o para utilizar otras APIS de Google qué requieran autenticación por parte del usuario.

Primero tenemos que añadir el proyecto en FireBase, puedes seguir este tutorial de aquí: Cómo añadir proyectos Android en Google Firebase para poder utilizar APIS, Google Analytics…

Después, una vez añadido el proyecto, tenemos qué ir al apartado de Authentication

Y pulsamos en comenzar

Ahora elegimos Proveedor Google

Lo habilitamos y pulsamos en guardar.

Una vez guardado pulsamos en editar.

Y copiamos el ID de cliente web dentro del apartado de Configuración del SDK web.

Este código tendremos que copiarlo dentro de nuestro proyecto Android, para ello creamos un nuevo String y lo añadimos.

    <string name="id_log">fasdc3423423e23dqdw.apps.googleusercontent.com</string>

Una vez añadido, vamos a añadir el siguiente código en el lugar de nuestra APP que queramos iniciar sesión, en este caso voy a utilizar MainActivity y un botón XML.

Añadimos esto en activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="iniciarGoogle"
            android:text="Iniciar Sesion con Google" />

    </LinearLayout>

</RelativeLayout>

Y ahora dentro de MainActivity.java añadimos lo siguiente

public class GoogleFitActivity extends Activity {

    private static final int SIGN_IN_REQUEST_CODE = 1001;

    private GoogleSignInAccount googleSignInAccount;

    private final int RC_SIGN_IN = 13;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.google_fit);
    }

    //Accion del boton
    public void iniciarGoogle(View v) {
        iniciarSesionGoogle();
    }

   
    private void iniciarSesionGoogle() {
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.id_log)) //Aquí añadimos el ID de Google Obtenido de FireBase
                .requestEmail()
                .build();

        GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(getApplicationContext(), gso);
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }


    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            try {
                Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
                googleSignInAccount = task.getResult(ApiException.class);
                //Aquí dentro ya podemos utilizar Google Sign para lo que queramos, si llega a este punto significa que el usuario ha entrado correctamente,
                //podemos registrarlo en nuestra Base de Datos, o utilizar un API de Google...
            } catch (Exception e) {
                Log.e("errr", "excepcion " + e.toString());
            }

        }
    }
}

Y listo, con este código podéis iniciar sesión con Google en vuestras APPs.

Deja un comentario