La función Restablecer credenciales del Administrador de credenciales permite a los usuarios restablecer sus cuentas de apps cuando configuran un dispositivo nuevo. Esta API está en versión preliminar para desarrolladores y está disponible en todos los dispositivos que tengan Android 9 o versiones posteriores, y la versión principal 242200000 o posterior de los Servicios de Google Play (GMS). Entre los beneficios de la función Restablecer credenciales, se incluyen los siguientes:
- Experiencia del usuario optimizada: Los usuarios pueden restablecer su cuenta de la app sin tener que acceder manualmente a cada app individual.
- Mayor participación de los usuarios: Es más probable que los usuarios sigan usando tu app si pueden restablecer su cuenta cuando configuran un dispositivo nuevo.
- Reducción del esfuerzo de desarrollo: La función Restablecer credenciales está integrada con Credential Manager, por lo que los desarrolladores que ya admiten llaves de acceso pueden agregar capacidades de restablecimiento de credenciales.
Cómo funciona
Puedes usar la opción para restablecer credenciales para crear, obtener y borrar las credenciales relevantes.
- Crea la credencial de restablecimiento: Cuando el usuario acceda a tu app, crea una credencial de restablecimiento asociada con su cuenta. Esta credencial se almacena de forma local y se sincroniza con la nube si el usuario habilitó la Copia de seguridad de Google y la encriptación de extremo a extremo está disponible (las apps pueden inhabilitar la sincronización con la nube).
- Obtén la credencial de restablecimiento: Cuando el usuario configura un dispositivo nuevo, tu app puede solicitar la credencial de restablecimiento del Administrador de credenciales. Esto te permite que el usuario acceda automáticamente sin necesidad de ninguna entrada adicional.
- Borra la credencial de restablecimiento: Cuando el usuario salga de tu app, debes borrar la credencial de restablecimiento asociada.
La función Restablecer credenciales se puede integrar sin problemas con los sistemas de backend que ya implementaron llaves de acceso. Esta compatibilidad se debe al hecho de que las llaves de acceso y las llaves de restablecimiento (tipo de credencial que usa la función Restablecer credenciales) cumplen con las mismas especificaciones técnicas subyacentes. Esta alineación garantiza que el proceso de restablecimiento de credenciales pueda recuperar y restablecer de manera eficaz las credenciales del usuario almacenadas en sistemas habilitados para llaves de acceso, lo que proporciona una experiencia coherente y fácil de usar en diferentes plataformas y métodos de autenticación.
Implementación
La API de Restore Credentials está disponible a través de la biblioteca de Jetpack de Credential Manager. Para comenzar, sigue estos pasos:
Agrega la dependencia de Credential Manager a tu proyecto.
// build.gradle.kts implementation("androidx.credentials:credentials:1.5.0-alpha03")
Crearás un objeto
CreateRestoreCredentialRequest
.Llama al método
createCredential()
en el objetoCredentialManager
.val credentialManager = CredentialManager.create(context) // On a successful authentication create a Restore Key // Pass in the context and CreateRestoreCredentialRequest object val response = credentialManager.createCredential(context, createRestoreRequest)
Esta credencial de restablecimiento generada es un tipo de credencial de WebAuthn y se conoce como clave de restablecimiento.
Cuando el usuario configure un dispositivo nuevo, llama al método
getCredential()
en el objetoCredentialManager
.// Fetch the Authentication JSON from server val authenticationJson = ... // Create the GetRestoreCredentialRequest object val options = GetRestoreCredentialOption(authenticationJson) val getRequest = GetCredentialRequest(Immutablelist.of(options)) // The restore key can be fetched in two scenarios to // 1. On the first launch of app on the device, fetch the Restore Key // 2. In the onRestore callback (if the app implements the Backup Agent) val response = credentialManager.getCredential(context, getRequest)
Cuando el usuario salga de tu app, llama al método
clearCredentialState()
en el objetoCredentialManager
.// Create a ClearCredentialStateRequest object val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL) // On user log-out, clear the restore key val response = credentialManager.clearCredentialState(clearRequest)
Si usas un agente de copia de seguridad, realiza la parte getCredential
dentro de la devolución de llamada onRestore
. Esto garantiza que las credenciales de la app se restablezcan inmediatamente después de que se restablezcan los datos de la app.