Функция восстановления учетных данных диспетчера учетных данных позволяет пользователям восстанавливать свои учетные записи приложений при настройке нового устройства. Этот API находится в предварительной версии для разработчиков и доступен на всех устройствах с Android 9 или более поздней версии и службами Google Play (GMS) базовой версии 242200000 или более поздней версии. Преимущества функции восстановления учетных данных включают в себя:
- Удобный пользовательский интерфейс : пользователи могут восстановить свою учетную запись приложения без необходимости вручную входить в каждое отдельное приложение.
- Повышение вовлеченности пользователей . Пользователи с большей вероятностью продолжат использовать ваше приложение, если смогут восстановить свою учетную запись при настройке нового устройства.
- Снижение усилий по разработке : функция восстановления учетных данных интегрирована с Credential Manager, поэтому разработчики, которые уже поддерживают ключи доступа, могут добавить возможности восстановления учетных данных.
Как это работает
Вы можете использовать «Восстановить учетные данные» для создания, получения и очистки соответствующих учетных данных.
- Создайте учетные данные для восстановления . Когда пользователь входит в ваше приложение, создайте учетные данные для восстановления, связанные с его учетной записью. Эти учетные данные хранятся локально и синхронизируются с облаком, если пользователь включил резервное копирование Google и доступно сквозное шифрование (приложения могут отказаться от синхронизации с облаком).
- Получите учетные данные для восстановления . Когда пользователь настраивает новое устройство, ваше приложение может запросить учетные данные для восстановления у диспетчера учетных данных. Это позволяет автоматически входить в систему без необходимости ввода каких-либо дополнительных данных.
- Очистите учетные данные для восстановления . Когда пользователь выходит из вашего приложения, вам следует удалить связанные учетные данные для восстановления.
Функция восстановления учетных данных может легко интегрироваться с серверными системами, в которых уже реализованы ключи доступа. Эта совместимость обусловлена тем, что и ключи доступа, и ключи восстановления (тип учетных данных, используемый функцией восстановления учетных данных) соответствуют одним и тем же базовым техническим характеристикам. Такое согласование гарантирует, что процесс восстановления учетных данных может эффективно извлекать и восстанавливать учетные данные пользователя, хранящиеся в системах с ключами доступа, обеспечивая единообразный и удобный для пользователя интерфейс на разных платформах и методах аутентификации.
Выполнение
API восстановления учетных данных доступен через библиотеку Credential Manager Jetpack. Чтобы начать, выполните следующие действия:
Добавьте зависимость диспетчера учетных данных в свой проект.
// build.gradle.kts implementation("androidx.credentials:credentials:1.5.0-alpha03")
Создайте объект
CreateRestoreCredentialRequest
.Вызовите метод
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 и называются ключом восстановления .
Когда пользователь настраивает новое устройство, вызовите метод
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)
Когда пользователь выходит из вашего приложения, вызовите метод
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
. Это гарантирует, что учетные данные приложения будут восстановлены сразу после восстановления данных приложения.