Разрешение Smart Lock для нескольких учетных записей всегда отображается

Я внедряю Google Smart Lock в свое приложение. У меня он автоматически регистрирует пользователя с одной учетной записью, и он работает хорошо.

Однако, как только я добавляю вторую учетную запись в микс, всегда отображается диалоговое окно разрешения, чтобы выбрать, какую учетную запись я хочу. Это продолжает отображаться даже после того, как я выбрал учетную запись и перезапустил приложение.

Это диалоговое окно больше не должно отображаться после того, как я выбрал учетную запись, которую я хочу использовать для умной блокировки, так каковы возможные причины, по которым он все еще отображается?

-Спасибо


person Elforama    schedule 02.12.2015    source источник


Ответы (2)


Я работаю в команде Smart Lock в Google, надеюсь, это ответит на ваш вопрос:

  • как вы заметили, если вызывается метод CredentialsApi.request() API и существует несколько сохраненных учетных записей для приложения, хранящихся либо в одной, либо в нескольких учетных записях Google на устройстве (или автоматический вход был отключен пользователем для одной из своих учетных записей или разработчиком, вызвав CredentialsApi.disableAutoSignIn()), тогда API перезвонит с CredentialRequestResult с getStatusCode() из RESOLUTION_REQUIRED, что означает, что пользователь должен отобразить пользовательский интерфейс, чтобы выбрать учетные данные для продолжения. startResolutionForResult() откроется диалоговое окно, как описано в обзоре API.

  • как только приложение получает учетные данные либо в результате автоматического входа, либо после того, как пользователь выбрал их в диалоговом окне, большинство приложений будут использовать эти учетные данные для входа пользователя в серверную службу и установления сеанса с файлом cookie или токеном для app и управлять им независимо от API Smart Lock. Таким образом, большинство приложений не будут снова вызывать API после того, как пользователь вошел в систему и существует текущий сеанс, поэтому диалоговое окно не будет отображаться снова после первоначального входа.

  • когда пользователь выходит из системы, вызов CredentialsApi.disableAutoSignIn() предотвратит автоматический повторный вход пользователя при повторном запуске действия аутентификации, а отключенное состояние автоматически управляется и сбрасывается, когда пользователь выбирает запись в пользовательском интерфейсе средства выбора учетных данных или успешно CredentialsApi.save() выполняется вызов, и в этот момент устанавливается сеанс пользователя, и нет необходимости снова вызывать API до события выхода.

Я думаю, что путаница в этом вопросе связана с вызовом API после того, как пользователь вошел в систему, и у них уже может быть активный сеанс. Это было вашим намерением? Если вам нужно управлять учетными данными приложения на устройстве после получения или ввода пароля пользователем, вы можете использовать Диспетчер учетных записей на Android, который не зависит от каких-либо учетных записей Google или API (тогда как Smart Lock предназначен для сохранения данных для входа в облаке для использования на разных платформах на новых или отдельных устройств для запуска процесса аутентификации).

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

Оставляйте комментарии с любыми вопросами или отзывами, если вам нужна дополнительная информация или разъяснения или если это не отвечает на ваш вопрос!

person Steven    schedule 30.12.2015
comment
Спасибо, Стивен, это то, что я искал. Приложение, над которым я работаю, требует, чтобы пользователь входил в систему каждый раз при перезапуске приложения, поэтому я хочу, чтобы это делалось автоматически. В настоящее время я получаю учетные данные каждый раз, когда приложение перезапускается, и я использую API учетных данных для получения сохраненной информации для входа. Кажется, в моем случае диалоговое окно выбора учетной записи всегда должно отображаться, если существует более одной учетной записи. Я надеюсь, что вы сможете добавить эту дополнительную функцию в будущем. Спасибо за помощь! - person Elforama; 31.12.2015
comment
Отлично, у вас есть указатель на ваше приложение, оно доступно в Play Store? Я попрошу нашу команду UX / eng рассмотреть этот вариант использования и посмотреть, можем ли мы дать рекомендацию или рассмотреть возможность корректировки API. - person Steven; 31.12.2015
comment
Это было бы большим подспорьем, вот альфа-сообщество G+. Пожалуйста, присоединитесь к этому, чтобы загрузить последнюю версию с функцией SmartLock. plus.google.com/communities/109600259045316723754 - person Elforama; 31.12.2015
comment
Спасибо, на самом деле оказалось, что я уже в группе и попробовал приложение ;) ... отправил несколько отзывов, которые у меня были, на адрес электронной почты отзывов об альфа-тестировании ... еще немного подумаю над этой конкретной проблемой и дам вам знать. - person Steven; 31.12.2015

Когда у вас есть несколько учетных записей, вы всегда будете показывать это диалоговое окно разрешения. Посмотрите это: https://developers.google.com/identity/smartlock-passwords/android/images/smartlock-passwords-flow.png

из: https://developers.google.com/identity/smartlock-passwords/android/overview

person Pauland    schedule 30.12.2015
comment
Кажется, это противоречит цели функции автоматического входа. Чуть глубже в документах упоминается, что если пользователь выходит из системы, необходимо отключить автоматический вход, чтобы пользователь мог войти в систему с другой учетной записью. В тот момент, когда они входят в систему с другой учетной записью, автоматический вход не должен быть отключен, он должен просто начать подписывать их в свою новую учетную запись. Возможно, я что-то упускаю здесь. - person Elforama; 30.12.2015
comment
Я думаю, что 90% пользователей будут иметь один аккаунт. В моем случае с несколькими учетными записями я всегда вижу это диалоговое окно. Когда у меня есть одна учетная запись ›› автоматический вход в систему Если я выхожу ›› диалоговое окно (даже если у меня есть одна учетная запись) - person Pauland; 31.12.2015