Flujo de integración de Android

A fin de integrar Smart Lock para contraseñas en tu app para Android, debes agregar 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 hay muchas formas de integrar Smart Lock para contraseñas y los detalles 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 de tu servicio que tienen una sola credencial guardada acceden de inmediato y se dirigen directamente a la vista de acceso cuando abren 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 ir a la vista de acceso de la app.
  • Los usuarios que no tengan credenciales guardadas o que aún no se hayan registrado pueden elegir su nombre y correo electrónico con solo presionar una vez. Luego, se los enviará de manera inteligente a la vista de acceso o registro, con esta información completada de forma previa.
  • Cuando los usuarios salen de la 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 se inicie la app, si aún no accedió ningún usuario, llama a CredentialsClient.request().
  2. Si Task se ejecuta correctamente, obtén las credenciales del usuario con getResult().getCredential() y úsalas para acceder.
  3. Si 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 sus credenciales y usarlas para acceder.

Guardar credenciales

  1. Si Task falla con una ApiException y getStatusCode() muestra SIGN_IN_REQUIRED, el usuario no tiene credenciales guardadas y debe acceder o registrarse de forma manual mediante tu flujo de acceso o registro actual. Una vez que el usuario termine de acceder correctamente, puedes darle la oportunidad de guardar sus credenciales para su futura recuperación (paso 5).

    Puedes ayudar al usuario a acceder o registrarse de manera más rápida y fácil si recuperas sugerencias de acceso, como la dirección de correo electrónico del usuario. El usuario puede seleccionar la sugerencia y omitir la escritura de sus credenciales. Si tu app requiere que los usuarios accedan, puedes optar por recuperar sugerencias inmediatamente después de que falle la solicitud de credenciales inicial (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 correctamente, 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 la dirección de correo electrónico del usuario como el ID y especifica el proveedor de identidad con setAccountType.

Salir

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

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