Estamos descontinuando la biblioteca de la plataforma de JavaScript de inicio de sesión de Google para la web . La biblioteca no estará disponible para su descarga después de la fecha de desactivación del 31 de marzo de 2023. En su lugar, utilice los nuevos Servicios de identidad de Google para la Web .
De forma predeterminada, las ID de cliente recién creadas ahora no pueden usar la Biblioteca de plataforma anterior, las ID de cliente existentes no se ven afectadas. Los nuevos ID de cliente creados antes del 29 de julio de 2022 pueden establecer `plugin_name` para habilitar el uso de la biblioteca de Google Platform.

Cómo integrar el Acceso con Google en tu app para Android

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Para integrar el Acceso con Google en tu app para Android, configura Acceso con Google y agrega un botón al diseño de tu app que inicie el flujo de acceso.

Antes de comenzar

Configura un proyecto en la Consola de API de Google y configura tu proyecto de Android Studio.

Configura el Acceso con Google y el objeto GoogleSignInClient

  1. En el método onCreate de tu actividad de acceso, configura el Acceso con Google para solicitar los datos del usuario que requiere tu app. Por ejemplo, para configurar el Acceso con Google a fin de solicitar el ID de usuario y la información básica del perfil, crea un objeto GoogleSignInOptions con el parámetro DEFAULT_SIGN_IN. Para solicitar también direcciones de correo electrónico de los usuarios, crea el objeto GoogleSignInOptions con la opción requestEmail.

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    Si necesitas solicitar alcances adicionales para acceder a las API de Google, especifícalos con requestScopes. Para obtener la mejor experiencia del usuario, durante el acceso solo solicita los alcances necesarios para que tu app funcione al mínimo. Solicita cualquier permiso adicional solo cuando lo necesites para que tus usuarios vean la pantalla de consentimiento en el contexto de una acción que realizaron. Consulta Cómo solicitar alcances adicionales.

  2. Luego, también en el método onCreate de tu actividad de acceso, crea un objeto GoogleSignInClient con las opciones que especificaste.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Verifica si un usuario ya accedió

En el método onStart de tu actividad, verifica si un usuario ya accedió a tu app con Google.

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

Si GoogleSignIn.getLastSignedInAccount muestra un objeto GoogleSignInAccount (en lugar de null), significa que el usuario ya accedió a tu app con Google. Actualiza tu IU según corresponda; es decir, oculta el botón de acceso, inicia tu actividad principal o lo que sea apropiado para tu app.

Si GoogleSignIn.getLastSignedInAccount muestra null, significa que el usuario aún no accedió a tu app con Google. Actualiza la IU para mostrar el botón de Acceso con Google.

Agrega el botón de Acceso con Google a tu app

  1. El botón de Acceso estándar con GoogleAgrega el SignInButton al diseño de tu aplicación:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Opcional: Si usas el gráfico del botón de acceso predeterminado en lugar de proporcionar tus propios elementos del botón de acceso, puedes personalizar el tamaño del botón con el método setSize.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. En la actividad de Android (por ejemplo, en el método onCreate), registra el botón OnClickListener de tu botón para que el usuario acceda:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Inicia el flujo de acceso

  1. Imagen del selector de cuentas de acceso En el método onClick de la actividad, controla los toques del botón de acceso mediante la creación de un intent de acceso con el método getSignInIntent y el inicio del intent con startActivityForResult.

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    Si se inicia el intent, se le solicita al usuario que seleccione una Cuenta de Google para acceder. Si solicitaste permisos más allá de profile, email y openid, también se le solicitará al usuario que otorgue acceso a los recursos solicitados.

  2. Después de que el usuario accede, puedes obtener un objeto GoogleSignInAccount para el usuario en el método onActivityResult de la actividad.

    @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) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    El objeto GoogleSignInAccount contiene información sobre el usuario que accedió, como su nombre.

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    También puedes obtener la dirección de correo electrónico del usuario con getEmail, el ID de Google del usuario (para el uso del cliente) con getId y un token de ID para el usuario con getIdToken. Si necesitas pasar el usuario que accedió a un servidor de backend, envía el token de ID a tu servidor de backend y valida el token en el servidor.