Аутентификатор аккаунта Google запрашивает разрешение во время выполнения - PullRequest
3 голосов
/ 02 апреля 2011

Я использую AccountManager.getAuthToken из моего сервиса для доступа к Googledocs и Spreadsheet API.

Поскольку я делаю это из фона и не хочу прерывать пользователя, я разрешаю accountManager генерировать уведомление, когда необходимо взаимодействие с пользователем (используя параметр boolean notifyAuthFailure).

Как я и ожидал, CallBack вызывается с помощью AccounManagerFuture, которая в этом случае преобразуется в Bundle с полем KEY_INTENT.

"В этом случае вам, возможно, придется подождать пока пользователь не ответит, что может занять часы или дни или навсегда. когда пользователь отвечает и предоставляет новый пароль, менеджер аккаунта транслировать LOGIN_ACCOUNTS_CHANGED_ACTION Intent, какие приложения можно использовать, чтобы попробовать снова "

Хорошо работает, когда дело касается только неправильного пароля. Но я столкнулся с проблемой, что AccountAuthenticator запрашивает разрешение во время выполнения, и намерение (из панели уведомлений) запускает GrantCredentialsPermissionActivity, которое после нажатия пользователем кнопки (Allow или Deny) не позволяет мне узнать, что пользователь уже ответил.

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

Я не могу получить onActivityResult из GrantCredentialsPermissionActivity, потому что я запускаю его из NotificationBar (а не из других моих действий, поскольку я использую службу при попытке получить токен)

Я не могу указать разрешения в манифесте заранее, потому что, насколько я понимаю, это некоторые обычные разрешения, которые определены Google authenticator.

Похоже, что он не передает никаких намерений, когда пользователь утверждает / отклоняет запрошенное разрешение для приложения во время выполнения после закрытия GrantCredentialsPermissionActivity. Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 января 2013

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

0 голосов
/ 14 июля 2011

Я думаю, что лучший способ узнать, когда взаимодействие с пользователем закончено, - это передать событие в эфир и получить его.

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