Si el inicio de sesión con One Tap satisface sus necesidades, considere usarlo en su lugar. One Tap tiene una experiencia de usuario actualizada y otras mejoras.

Flujo de integración de Android

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

Para integrar Smart Lock para contraseñas en tu app para Android, debes agregar las llamadas a la API de credenciales en el flujo de inicio y acceso de tu app. En el siguiente diagrama, se muestra el flujo de una app para Android típica que usa Smart Lock para contraseñas.

Si bien existen muchas maneras de integrar correctamente Smart Lock para contraseñas y los detalles específicos de una integración dependen de la estructura y la experiencia del usuario de la app, se recomienda el siguiente flujo para la mayoría de las apps. Las apps que usan este flujo tienen las siguientes ventajas en la experiencia del usuario:

  • Los usuarios existentes del servicio que tengan una sola credencial guardada accederán de inmediato y irán directamente a la vista con acceso cuando abran la app.
  • Los usuarios que tienen varias credenciales guardadas o que inhabilitaron el acceso automático deben responder a un solo diálogo antes de acceder a la vista de acceso de la app.
  • Los usuarios que no tienen credenciales guardadas o que aún no se han registrado pueden elegir su nombre y correo electrónico con solo presionar una vez y acceder de manera inteligente a la vista de acceso o de registro, con esta información completada previamente.
  • Cuando los usuarios salen de tu cuenta, la app se asegura de que no vuelvan a acceder automáticamente.

Diagrama del flujo de acceso de Smart Lock

Recuperar credenciales

  1. Cuando la app se inicie, si aún no accedió ningún usuario, llama a CredentialsClient.request().
  2. Si Task funciona correctamente, obtén las credenciales del usuario con getResult().getCredential() y úsalas para acceder.
  3. Si el Task falla y la excepción es una instancia de ResolvableApiException y getStatusCode() muestra RESOLUTION_REQUIRED, se requiere la entrada del usuario para elegir una credencial. Llama a startResolutionForResult() para pedirle al usuario que seleccione una cuenta guardada y, luego, llama a getParcelableExtra(Credential.EXTRA_KEY) a fin de obtener las credenciales del usuario y úsalo para acceder.

Guardar credenciales

  1. Si Task falla con una ApiException y getStatusCode() muestra SIGN_IN_REQUIRED, el usuario no tendrá credenciales guardadas y deberá acceder o registrarse de forma manual con el flujo de acceso o de acceso actual. Una vez que el usuario completa el acceso con éxito, puedes brindarle la oportunidad de guardar sus credenciales para su recuperación futura (paso 5).

    Para ayudar al usuario a acceder o registrarse más rápido y fácil, recupera sugerencias de acceso, como la dirección de correo electrónico del usuario. El usuario puede seleccionar la sugerencia y omitir el paso de escribir sus credenciales. Si tu app requiere que los usuarios accedan, puedes elegir recuperar las sugerencias inmediatamente después de que falle la solicitud inicial de credenciales (de lo contrario, puedes esperar hasta que el usuario inicie el flujo de acceso o registro).

    1. Llama a CredentialsClient.getHintPickerIntent() e inicia el intent para solicitarle al usuario que seleccione una cuenta. Luego, llama a getParcelableExtra(Credential.EXTRA_KEY) para obtener la sugerencia de acceso.
    2. Si el ID de usuario de la sugerencia coincide con un usuario existente, completa previamente el formulario de acceso con él y permite que el usuario ingrese la contraseña para acceder.
    3. Si el ID de usuario de la sugerencia no coincide con un usuario existente, completa previamente el formulario de registro con el ID y el nombre del usuario y permite que el usuario cree una cuenta nueva.
  2. Después de que el usuario acceda o cree una cuenta, guarda el ID de usuario y la contraseña con CredentialsClient.save().

    Si el usuario accedió con un proveedor de identidad federada, como Acceso con Google, crea el objeto Credential con el ID del correo electrónico del usuario y especifica el proveedor de identidad con setAccountType.

Cómo salir de tu cuenta

  1. Cuando el usuario salga de la cuenta, llama a CredentialsClient.disableAutoSignIn() para evitar que vuelva a acceder de inmediato. Inhabilitar el acceso automático también permite que los usuarios alternen fácilmente entre diferentes cuentas (por ejemplo, entre cuentas personales y de trabajo, o entre cuentas de dispositivos compartidos) sin tener que volver a ingresar la información de acceso.

¿Estás listo para integrar Smart Lock para contraseñas en tu app? Comienza.