Восстановите учетные данные приложения при настройке нового устройства

Функция восстановления учётных данных Credential Manager позволяет пользователям восстанавливать учётные записи приложений при настройке нового устройства. Этот API находится в стадии предварительной версии для разработчиков и доступен на всех устройствах с Android 9 или более поздней версии и Google Play Services (GMS) Core версии 242200000 или выше. Преимущества функции восстановления учётных данных:

  • Удобный пользовательский интерфейс : пользователи могут восстанавливать свои учетные записи приложений без необходимости вручную входить в каждое отдельное приложение.
  • Повышение вовлеченности пользователей : пользователи с большей вероятностью продолжат использовать ваше приложение, если смогут восстановить свою учетную запись при настройке нового устройства.
  • Сокращение усилий на разработку : функция восстановления учетных данных интегрирована с диспетчером учетных данных, поэтому разработчики, которые уже поддерживают ключи доступа, могут добавлять возможности восстановления учетных данных.

Как это работает

Вы можете использовать функцию восстановления учетных данных для создания, получения и удаления соответствующих учетных данных.

  1. Создайте учётные данные для восстановления : когда пользователь войдет в ваше приложение, создайте учётные данные для восстановления, связанные с его учётной записью. Эти данные хранятся локально и синхронизируются с облаком, если пользователь включил Google Backup и доступно сквозное шифрование (приложения могут отказаться от синхронизации с облаком).
  2. Получение учётных данных для восстановления : когда пользователь настраивает новое устройство, ваше приложение может запросить учётные данные для восстановления из диспетчера учётных данных. Это позволяет автоматически авторизовать пользователя без необходимости дополнительных действий.
  3. Очистите учетные данные восстановления : когда пользователь выходит из вашего приложения, вам следует удалить связанные учетные данные восстановления.

Функция восстановления учётных данных легко интегрируется с бэкэнд-системами, в которых уже реализованы ключи доступа. Эта совместимость обусловлена тем, что как ключи доступа, так и ключи восстановления (тип учётных данных, используемый функцией восстановления учётных данных) соответствуют одним и тем же базовым техническим спецификациям. Такое соответствие гарантирует, что процесс восстановления учётных данных сможет эффективно извлекать и восстанавливать учётные данные пользователей, хранящиеся в системах с ключами доступа, обеспечивая единообразный и удобный интерфейс на различных платформах и с различными методами аутентификации.

Нижний лист диспетчера учетных данных
Рисунок 1. Схема, иллюстрирующая восстановление данных приложения на новом устройстве с использованием учетных данных восстановления, включая создание учетных данных, запуск процесса восстановления и автоматический вход пользователя в систему.

Выполнение

API восстановления учётных данных доступен через библиотеку Credential Manager Jetpack. Чтобы начать работу, выполните следующие действия:

  1. Добавьте зависимость Credential Manager в свой проект.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Создайте объект CreateRestoreCredentialRequest .

  3. Вызовите метод createCredential() для объекта 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)
    

    Сгенерированные учетные данные восстановления являются типом учетных данных webauthn и называются ключом восстановления .

  4. Когда пользователь настраивает новое устройство, вызовите метод getCredential() для объекта CredentialManager .

    // Fetch the Authentication JSON from server
    val authenticationJson = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(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. Когда пользователь выходит из вашего приложения, вызовите метод clearCredentialState() объекта 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)
    

Если вы используете агент резервного копирования, выполните часть getCredential в обратном вызове onRestore . Это обеспечит немедленное восстановление учётных данных приложения после восстановления данных приложения.