Статус входа в игру Google не передается в предыдущих действиях

В моем приложении для Android у меня есть 2 экрана HOME и SCOREBOARD.

ГЛАВНЫЙ экран: на этом экране есть кнопка для входа в Google Play. Эта кнопка будет отображать Вход, если он находится в состоянии выхода (или) Выход, если он находится в состоянии входа.

SCOREBOARD: Здесь есть возможность войти в систему, пока игрок проверяет таблицы лидеров / отправляет результаты.

Проблема: игрок может войти в систему на ГЛАВНОМ экране или на экране ТАБЛО. Если игрок входит в систему на ГЛАВНОМ экране, он также запоминается на экране SCOREBOARD. Но когда игрок входит в систему на экране SCOREBOARD, когда он возвращается на главный экран, вызывается следующий метод.

onSignInFailed() 

Поскольку мы уже вошли в систему, я ожидаю обратного вызова onSignInSucceeded().

Если действие разделяет вход, произошедший в действии B (экран SCOREBOARD) с действием A (HOME screen), моя проблема решена.

Не могли бы вы помочь мне решить эту проблему?

Я использую класс BaseGameActivity и GameHelper, а также приведенный ниже метод для входа.

mHelper.beginUserInitiatedSignIn()

person iappmaker    schedule 22.10.2014    source источник


Ответы (2)


Здесь есть хороший ответ, связанный с этим: Как правильно использовать вход в Google Plus с несколькими действиями?

Короче говоря, каждое действие должно иметь экземпляр GoogleApiClient. Пользователю по-прежнему нужно войти только один раз. Клиент — это легковесный объект, обращающийся к общему состоянию в процессе Служб Google Play.

Обратные вызовы будут запущены, когда действие начнет использоваться, но шаблонный код должен просто вызвать connect(), как обычно, и клиент будет правильно инициализирован.

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

person Clayton Wilkinson    schedule 22.10.2014
comment
Образец CollectAllTheStars2 (github.com/playgameservices/android-basic- Samples/tree/master/) имеет 2 действия: основное действие, а затем одно, которое используется для выбора из нескольких сохраненных игр. - person Clayton Wilkinson; 23.10.2014

Являются ли области SCOREBOARD подмножеством областей действия HOME?

Вход завершается успешно, когда пользователь разрешает доступ к вашему приложению со всеми запрашиваемыми областями. Если HOME запрашивает области A, B и C, а SCOREBOARD запрашивает только A и B, то пользователь, который дал согласие на диалог аутентификации HOME, будет нормально подключаться в SCOREBOARD (они уже приняли A и B, не имеет значения, что они приняли C). Но пользователю, согласившемуся на диалог SCOREBOARD, потребуется повторно авторизоваться в диалоговом окне HOME (они уже приняли A и B, но им еще нужно принять C).

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

person Hounshell    schedule 22.10.2014
comment
Я явно не использую/не добавляю какие-либо полномочия, такие как A/B/C. Я просто использую BaseGameActivity и mHelper.beginUserInitiatedSignIn() на обоих экранах. Я просто заметил, что иногда это работает, а иногда терпит неудачу - person iappmaker; 23.10.2014