Функция восстановления учётных данных Credential Manager позволяет пользователям восстанавливать учётные записи приложений при настройке нового устройства. Этот API находится в стадии предварительной версии для разработчиков и доступен на всех устройствах с Android 9 или более поздней версии и Google Play Services (GMS) Core версии 242200000 или выше. Преимущества функции восстановления учётных данных:
- Удобный пользовательский интерфейс : пользователи могут восстанавливать свои учетные записи приложений без необходимости вручную входить в каждое отдельное приложение.
- Повышение вовлеченности пользователей : пользователи с большей вероятностью продолжат использовать ваше приложение, если смогут восстановить свою учетную запись при настройке нового устройства.
- Сокращение усилий на разработку : функция восстановления учетных данных интегрирована с диспетчером учетных данных, поэтому разработчики, которые уже поддерживают ключи доступа, могут добавлять возможности восстановления учетных данных.
Как это работает
Вы можете использовать функцию восстановления учетных данных для создания, получения и удаления соответствующих учетных данных.
- Создайте учётные данные для восстановления : когда пользователь войдет в ваше приложение, создайте учётные данные для восстановления, связанные с его учётной записью. Эти данные хранятся локально и синхронизируются с облаком, если пользователь включил Google Backup и доступно сквозное шифрование (приложения могут отказаться от синхронизации с облаком).
- Получение учётных данных для восстановления : когда пользователь настраивает новое устройство, ваше приложение может запросить учётные данные для восстановления из диспетчера учётных данных. Это позволяет автоматически авторизовать пользователя без необходимости дополнительных действий.
- Очистите учетные данные восстановления : когда пользователь выходит из вашего приложения, вам следует удалить связанные учетные данные восстановления.
Функция восстановления учётных данных легко интегрируется с бэкэнд-системами, в которых уже реализованы ключи доступа. Эта совместимость обусловлена тем, что как ключи доступа, так и ключи восстановления (тип учётных данных, используемый функцией восстановления учётных данных) соответствуют одним и тем же базовым техническим спецификациям. Такое соответствие гарантирует, что процесс восстановления учётных данных сможет эффективно извлекать и восстанавливать учётные данные пользователей, хранящиеся в системах с ключами доступа, обеспечивая единообразный и удобный интерфейс на различных платформах и с различными методами аутентификации.
Выполнение
API восстановления учётных данных доступен через библиотеку Credential Manager Jetpack. Чтобы начать работу, выполните следующие действия:
Добавьте зависимость Credential Manager в свой проект.
// 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 = 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)
Когда пользователь выходит из вашего приложения, вызовите метод
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
. Это обеспечит немедленное восстановление учётных данных приложения после восстановления данных приложения.