Я новичок в Google SDK и пытаюсь внедрить кнопку входа в Google в своем приложении, чтобы пользователи могли входить в систему со своими учетными записями Google. Я добавил SignInButton
и обработал базовую аутентификацию с помощью объекта PlusClient
. Я также использую AsyncTask
для получения токена аутентификации от GoogleAuthUtil
. как только я успешно получаю токен, я вызываю LoginActivity.finish()
и разрешаю доступ к моему приложению.
Когда я нажимаю SignInButton
, я получаю следующее:
- предлагает окно для выбора между моими учетными записями Google.
- Экран разрешений с просьбой подтвердить, что это приложение хочет знать ваше имя, основную информацию и т. д., на что я нажимаю «ОК».
- странный значок предупреждения об уведомлении (треугольник с восклицательным знаком внутри), который говорит «запрос на вход»
- после нажатия на уведомление я вижу быстрый экран «вход в систему» в течение нескольких секунд, а затем возвращаюсь к шагу 2, на который я снова нажимаю «ОК».
- повторное нажатие на кнопку входа приводит к успешному входу в систему.
Этот поток явно не такой, каким должен быть, поэтому мои вопросы:
- Почему я дважды получаю экран запроса разрешений? а также каждый раз, когда я пытаюсь войти?
- Как мне избавиться от этого странного предупреждающего уведомления и просто войти в систему, когда закончу?
Использование Android SDK версии 4.2 с Play Services SDK версии 10
ИЗМЕНИТЬ
Хорошо, такой глупый вопрос, но я еще не все понял. Оказывается, я использовал GoogleAuthUtil.getTokenWithNotification
, который отправляет push-уведомление, если метод не работает с восстанавливаемым действием. Поэтому я изменил его обратно на GoogleAuthUtil.getToken
и теперь восстанавливаю его программно, что лучше. Но я все еще получаю экран вмешательства, один раз, когда я звоню result.startResolutionForResult
внутри onConnectionFailed(ConnectionResult result)
, когда пытаюсь подключиться, и второй раз после звонка startActivityForResult
при звонке GoogleAuthUtil.getToken
. Это до сих пор загадка...
ИЗМЕНИТЬ 2
Первый вопрос (на второй дан ответ выше)) о повторных разрешениях, запрашиваемых у пользователя, обсуждается в здесь