Чтобы интегрировать Smart Lock для паролей в ваше приложение для Android, вам необходимо добавить вызовы Credentials API в процесс запуска и входа в приложение. На следующей диаграмме показан алгоритм работы типичного приложения Android, использующего Smart Lock для паролей.
Хотя существует множество способов успешной интеграции Smart Lock для паролей, а особенности интеграции зависят от структуры и пользовательского опыта приложения, для большинства приложений рекомендуется следующий порядок действий. Приложения, использующие этот процесс, имеют следующие преимущества для пользователя:
- Существующие пользователи вашей службы, у которых есть единые сохраненные учетные данные, сразу же входят в систему и переходят непосредственно к представлению для входа в систему при открытии приложения.
- Пользователям, у которых сохранено несколько учетных данных или которые отключили автоматический вход, необходимо ответить только на одно диалоговое окно, прежде чем они перейдут к представлению входа в приложение.
- Пользователи, у которых нет сохраненных учетных данных или еще не зарегистрировались, могут одним касанием выбрать свое имя и адрес электронной почты и автоматически перенаправить их в режим входа или регистрации с предварительно заполненной информацией.
- Когда пользователи выходят из системы, приложение гарантирует, что они не войдут автоматически снова.
Получить учетные данные
- При запуске приложения, если ни один пользователь еще не вошел в систему, вызовите
CredentialsClient.request()
. - Если
Task
выполнена успешно, получите учетные данные пользователя с помощьюgetResult().getCredential()
и используйте их для входа. - Если
Task
завершается сбоем и исключением является экземплярResolvableApiException
, аgetStatusCode()
возвращаетRESOLUTION_REQUIRED
, для выбора учетных данных требуется ввод данных пользователем. ВызовитеstartResolutionForResult()
, чтобы предложить пользователю выбрать сохраненную учетную запись, затем вызовитеgetParcelableExtra(Credential.EXTRA_KEY)
, чтобы получить учетные данные пользователя и использовать их для входа.
Сохранить учетные данные
Если
Task
завершается с ошибкойApiException
иgetStatusCode()
возвращаетSIGN_IN_REQUIRED
, у пользователя нет сохраненных учетных данных, и ему необходимо войти в систему или зарегистрироваться вручную, используя текущий процесс входа или регистрации. После того как пользователь успешно завершит вход в систему, вы можете предоставить ему возможность сохранить свои учетные данные для дальнейшего использования (шаг 5).Вы можете помочь пользователю быстрее и проще войти в систему или зарегистрироваться, получив подсказки для входа, например адрес электронной почты пользователя. Пользователь может выбрать подсказку и не вводить свои учетные данные. Если ваше приложение требует от пользователей входа в систему, вы можете выбрать получение подсказок сразу после сбоя первоначального запроса учетных данных (в противном случае вы можете подождать, пока пользователь не начнет процесс входа или регистрации).
- Вызовите
CredentialsClient.getHintPickerIntent()
и запустите намерение предложить пользователю выбрать учетную запись, затем вызовитеgetParcelableExtra(Credential.EXTRA_KEY)
, чтобы получить подсказку для входа. - Если идентификатор пользователя, указанный в подсказке, соответствует существующему пользователю, предварительно заполните им форму входа и позвольте пользователю ввести пароль для входа.
- Если идентификатор пользователя в подсказке не соответствует существующему пользователю, предварительно заполните форму регистрации, указав идентификатор и имя пользователя, и позвольте пользователю создать новую учетную запись.
- Вызовите
После того как пользователь успешно войдет в систему или создаст учетную запись, сохраните идентификатор пользователя и пароль с помощью
CredentialsClient.save()
.Если пользователь вошел в систему с помощью федеративного поставщика удостоверений, например Google Sign-In, создайте объект
Credential
с адресом электронной почты пользователя в качестве идентификатора и укажите поставщика удостоверений с помощьюsetAccountType
.
выход
- Когда пользователь выходит из системы, вызовите
CredentialsClient.disableAutoSignIn()
, чтобы предотвратить немедленный повторный вход пользователя в систему. Отключение автоматического входа также позволяет пользователям легко переключаться между учетными записями, например между рабочими и личными учетными записями или между учетными записями. на общих устройствах — без необходимости повторно вводить данные для входа.
Готовы интегрировать Smart Lock для паролей в свое приложение? Начать .