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