Restablecer credenciales

La función Restablecer credenciales del Administrador de credenciales permite a los usuarios restablecer su cuentas de apps al configurar un nuevo dispositivo. Esta API se encuentra en versión preliminar para desarrolladores y disponible en todos los dispositivos con Android 9 o versiones posteriores, y Servicios de Google Play (GMS) Core versión 242200000 o posterior. Los beneficios de Restablecer credenciales incluye lo siguiente:

  • Experiencia del usuario optimizada: Los usuarios pueden restablecer su cuenta de la app sin necesidad de acceder manualmente a cada app individual.
  • Mayor participación de los usuarios: Es más probable que los usuarios sigan usando tu si puede restablecer su cuenta cuando configure 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 Restablecer credenciales para crear, obtener y borrar credenciales credenciales.

  1. Crea la credencial de restablecimiento: Cuando el usuario acceda a tu app, crea una credencial de restablecimiento asociada con su cuenta. Esta credencial se almacenó de forma local y sincronizada en la nube si el usuario habilitó la Copia de seguridad de Google y la la encriptación de extremo está disponible (las apps pueden inhabilitar la sincronización con la nube)
  2. Obtén la credencial de restablecimiento: Cuando el usuario configura un dispositivo nuevo, tu app puede solicitar la Recuperación de credenciales desde el Administrador de credenciales. Esto te permite hacer que el usuario acceda automáticamente sin necesidad de ninguna entrada adicional.
  3. Borrar la credencial de restablecimiento: Cuando el usuario sale de la app, puedes debe 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 que tanto las llaves de acceso como las llaves de restablecimiento (tipo de credencial que usa la Restablecer credenciales) se adhieren a la misma técnica subyacente y las especificaciones del servicio. Esta alineación garantiza que el proceso de restablecimiento de credenciales pueda recuperar y restablecer de forma eficaz las credenciales de los usuarios almacenadas en una experiencia coherente y fácil de usar en diferentes y métodos de autenticación.

Hoja inferior del Administrador de credenciales
Figura 1: Diagrama que muestra el restablecimiento de los datos de una app en un dispositivo nuevo con una credencial de restablecimiento, incluida la creación de la credencial, el inicio de un flujo de restablecimiento y el acceso automático del usuario

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:

  1. Agrega la dependencia de Credential Manager a tu proyecto.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Crearás un objeto CreateRestoreCredentialRequest.

  3. Llama al método createCredential() en el objeto CredentialManager.

    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 llave de acceso y también se conoce como llave de acceso de restablecimiento o llave de restablecimiento.

  4. Cuando el usuario configure un dispositivo nuevo, llama al método getCredential() en la CredentialManager.

    // 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)
    
  5. Cuando el usuario salga de tu app, llama al método clearCredentialState() en el objeto CredentialManager.

    // 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 del 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.