A fin de integrar Smart Lock para contraseñas en tu app para Android, debes agregar llamadas a la API de credenciales al 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 formas de integrar Smart Lock para contraseñas con éxito 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 tengan una sola credencial guardada accederán de inmediato y irán directamente a la vista de 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 ir a la vista de acceso de la app.
- Los usuarios que no tienen credenciales guardadas o que aún no se registraron 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 de registro, con esta información completada previamente.
- Cuando los usuarios salen de la app, la app se asegura de que no vuelvan a acceder automáticamente.
Recupera credenciales
- Cuando se inicie la app, si aún no accedió ningún usuario, llama a
CredentialsClient.request()
. - Si
Task
funciona correctamente, obtén las credenciales del usuario congetResult().getCredential()
y úsalas para acceder. - Si
Task
falla y la excepción es una instancia deResolvableApiException
, ygetStatusCode()
muestraRESOLUTION_REQUIRED
, se requiere la entrada del usuario para elegir una credencial. Llama astartResolutionForResult()
para solicitarle al usuario que seleccione una cuenta guardada y, luego, llama agetParcelableExtra(Credential.EXTRA_KEY)
para obtener las credenciales del usuario y usarlas para acceder.
Guardar credenciales
Si
Task
falla con unaApiException
, ygetStatusCode()
muestraSIGN_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 completa el acceso con éxito, puedes darle la oportunidad de guardar sus credenciales para su futura recuperación (paso 5).Puedes ayudar al usuario a acceder o registrarse de forma 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 el paso de escribir sus credenciales. Si tu app requiere que los usuarios accedan, puedes optar por recuperar las sugerencias de inmediato 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).
- Llama a
CredentialsClient.getHintPickerIntent()
y, luego, inicia el intent para solicitarle al usuario que seleccione una cuenta. Luego, llama agetParcelableExtra(Credential.EXTRA_KEY)
para obtener la sugerencia de acceso. - Si el ID de usuario de la sugerencia coincide con un usuario existente, completa previamente el formulario de acceso y permite que el usuario ingrese la contraseña para acceder.
- 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.
- Llama a
-
Después de que el usuario acceda o cree una cuenta correctamente, guarda su ID y contraseña con
CredentialsClient.save()
.Si el usuario accedió con un proveedor de identidad federada, como el Acceso con Google, crea el objeto
Credential
con la dirección de correo electrónico del usuario como ID y especifica el proveedor de identidad consetAccountType
.
Salir
- 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 que los usuarios cambien 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.
¿Todo listo para integrar Smart Lock para contraseñas en tu app? Comienza.