Процесс интеграции Android

Чтобы интегрировать Smart Lock для паролей в ваше приложение для Android, вам необходимо добавить вызовы Credentials API в процесс запуска и входа в приложение. На следующей диаграмме показан алгоритм работы типичного приложения Android, использующего Smart Lock для паролей.

Хотя существует множество способов успешной интеграции Smart Lock для паролей, а особенности интеграции зависят от структуры и пользовательского опыта приложения, для большинства приложений рекомендуется следующий порядок действий. Приложения, использующие этот процесс, имеют следующие преимущества для пользователя:

  • Существующие пользователи вашей службы, у которых есть единые сохраненные учетные данные, сразу же входят в систему и переходят непосредственно к представлению для входа в систему при открытии приложения.
  • Пользователям, у которых сохранено несколько учетных данных или которые отключили автоматический вход, необходимо ответить только на одно диалоговое окно, прежде чем они перейдут к представлению входа в приложение.
  • Пользователи, у которых нет сохраненных учетных данных или еще не зарегистрировались, могут одним касанием выбрать свое имя и адрес электронной почты и автоматически перенаправить их в режим входа или регистрации с предварительно заполненной информацией.
  • Когда пользователи выходят из системы, приложение гарантирует, что они не войдут автоматически снова.

Схема процесса входа в Smart Lock

Получить учетные данные

  1. При запуске приложения, если ни один пользователь еще не вошел в систему, вызовите CredentialsClient.request() .
  2. Если Task выполнена успешно, получите учетные данные пользователя с помощью getResult().getCredential() и используйте их для входа.
  3. Если Task завершается сбоем и исключением является экземпляр ResolvableApiException , а getStatusCode() возвращает RESOLUTION_REQUIRED , для выбора учетных данных требуется ввод данных пользователем. Вызовите startResolutionForResult() , чтобы предложить пользователю выбрать сохраненную учетную запись, затем вызовите getParcelableExtra(Credential.EXTRA_KEY) , чтобы получить учетные данные пользователя и использовать их для входа.

Сохранить учетные данные

  1. Если Task завершается с ошибкой ApiException и getStatusCode() возвращает SIGN_IN_REQUIRED , у пользователя нет сохраненных учетных данных, и ему необходимо войти в систему или зарегистрироваться вручную, используя текущий процесс входа или регистрации. После того как пользователь успешно завершит вход в систему, вы можете предоставить ему возможность сохранить свои учетные данные для дальнейшего использования (шаг 5).

    Вы можете помочь пользователю быстрее и проще войти в систему или зарегистрироваться, получив подсказки для входа, например адрес электронной почты пользователя. Пользователь может выбрать подсказку и не вводить свои учетные данные. Если ваше приложение требует от пользователей входа в систему, вы можете выбрать получение подсказок сразу после сбоя первоначального запроса учетных данных (в противном случае вы можете подождать, пока пользователь не начнет процесс входа или регистрации).

    1. Вызовите CredentialsClient.getHintPickerIntent() и запустите намерение предложить пользователю выбрать учетную запись, затем вызовите getParcelableExtra(Credential.EXTRA_KEY) , чтобы получить подсказку для входа.
    2. Если идентификатор пользователя, указанный в подсказке, соответствует существующему пользователю, предварительно заполните им форму входа и позвольте пользователю ввести пароль для входа.
    3. Если идентификатор пользователя в подсказке не соответствует существующему пользователю, предварительно заполните форму регистрации, указав идентификатор и имя пользователя, и позвольте пользователю создать новую учетную запись.
  2. После того как пользователь успешно войдет в систему или создаст учетную запись, сохраните идентификатор пользователя и пароль с помощью CredentialsClient.save() .

    Если пользователь вошел в систему с помощью федеративного поставщика удостоверений, например Google Sign-In, создайте объект Credential с адресом электронной почты пользователя в качестве идентификатора и укажите поставщика удостоверений с помощью setAccountType .

выход

  1. Когда пользователь выходит из системы, вызовите CredentialsClient.disableAutoSignIn() , чтобы предотвратить немедленный повторный вход пользователя в систему. Отключение автоматического входа также позволяет пользователям легко переключаться между учетными записями, например между рабочими и личными учетными записями или между учетными записями. на общих устройствах — без необходимости повторно вводить данные для входа.

Готовы интегрировать Smart Lock для паролей в свое приложение? Начать .