Чтобы интегрировать Smart Lock for Passwords в ваше приложение для 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 for Passwords в свое приложение? Начать .