Android Authentication Manager, когда требуется разрешение пользователя?

Я пишу приложение для Android, и мне нужно запросить токен аутентификации из учетной записи. Получить список учетных записей и токен легко, у меня это работает до сих пор.

Проблема в том, что Jelly Bean открывает всплывающее окно с запросом разрешения пользователей. Теперь мой вопрос(ы):

  1. Каковы правила появления всплывающего диалогового окна? У меня такое было один раз, впервые после того, как я обновил свое устройство до Android 4.1. Кажется, это происходит случайно: при установке и удалении приложения я не смог воспроизвести ситуацию, когда это всплывающее окно появляется снова.

  2. Есть ли способ сбросить его без сброса к заводским настройкам? Мне нужно воспроизвести это для тестирования на вопрос 3.)

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

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


person Community    schedule 11.09.2012    source источник
comment
Это всплывающее окно, о котором вы спрашиваете? stackoverflow.com/questions/3965126/   -  person pcans    schedule 17.10.2012
comment
Извините за поздний ответ, но да. Это всплывающее окно появилось только с другой службой Google. Но он никогда не возвращался, сколько бы я не удалял приложение и не устанавливал его заново.   -  person    schedule 26.03.2013


Ответы (2)


Я попытался отозвать доступ к моему проекту движка приложения, и мне удалось отозвать разрешение, перейдя на страницу настроек учетных записей Google. Там вы можете отозвать доступ из службы входа в систему Android. После этого мне пришлось удалить гугл-аккаунт с телефона и добавить его обратно. Если вы снова запустите свое приложение, вы должны снова увидеть диалоговое окно разрешений.

person Michael    schedule 08.10.2012

Сброс/отзыв разрешения обычно зависит от типа токена. У этого есть две стороны: отзыв токена на стороне сервера с помощью страницы вашего профиля Google и отзыв разрешения вашего приложения на использование этого типа токена (на Android). Для серверной части вы можете отозвать токены OAuth и AuthSub, но не токены ClientLogin. Перейдите на страницу https://www.google.com/settings/security и нажмите кнопку "Изменить". в разделе «Авторизация приложений и сайтов». Для отзыва разрешения на устройстве удаление вашего приложения должно сбросить его (при удалении пакета удаляется запись в системной базе данных). Очевидно, это не работает должным образом на некоторых устройствах, но должно работать. Диалоговое окно появится только при попытке использовать токен, поэтому оно не должно появляться до того, как вы его запросите. Вы должны обрабатывать истечение срока действия в своем приложении (т. е. запрашивать новый токен), но это не будет отображать диалоговое окно разрешения.

person Nikolay Elenkov    schedule 17.10.2012
comment
Спасибо, проверил удаление на Nexus 7, Samsung Galaxy Nexus и других, но разрешение не отозвалось. Я запрашиваю разрешение для службы Google Cloud Print (токен OAUTH2), но на стороне сервера единственной записью авторизованного доступа была «Служба входа в систему Android». Удаление этого привело к необходимости повторного ввода учетных данных на устройстве, но экран разрешения не отображался повторно. - person PJL; 17.10.2012
comment
Хм, интересно. Не знаю, где осуществляется управление Cloud Print. Может консоль API? Должно быть какое-то место, где вы можете отозвать жетоны. Что касается разрешений на устройстве, то раньше работало так, может на JB поменяли, подробно не проверял. - person Nikolay Elenkov; 17.10.2012