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

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

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

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

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

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

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

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

Выполнение

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

  1. Добавьте зависимость диспетчера учетных данных в свой проект.

    // 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 = ...
    
    // 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. Когда пользователь выходит из вашего приложения, вызовите метод 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 . Это гарантирует, что учетные данные приложения будут восстановлены сразу после восстановления данных приложения.