android — Кросс-платформенная единая регистрация Google Plus: onConnected никогда не вызывалось при новой установке" />

Кросс-платформенная единая регистрация Google Plus: onConnected никогда не вызывалось при новой установке

Я пытаюсь реализовать "вход с нескольких устройств" с помощью Google Plus в моем приложении для Android.

Как реализовать это, не очень хорошо документировано, и лучшая документация, которую я нашел, это это видео , и эти примеры приложений в github.

Учитывая код примера приложения для Android и , что говорят разработчики Google в видео , я понимаю, что следующее бывает:

  1. Я устанавливаю и запускаю приложение на устройстве A. Это устройство имеет только одну учетную запись Google, которая никогда не входила в приложение.

  2. onCreate () вызовет PlusClient # connect (). Поскольку пользователь никогда не входил в систему на другом устройстве, мы получим onConnectionFailed ().

  3. Если пользователь нажимает кнопку входа, мы выполняем mLastConnectionResult.startResolutionForResult (), которая выполняет PendingIntent, который запрашивает разрешение у пользователя.

  4. Теперь, когда мы предоставили пользователю разрешения, новый вызов PlusClient # connect () приведет к onConnected ().

  5. Теперь мы устанавливаем приложение на устройстве B. На этом устройстве есть только одна учетная запись Google, такая же, как на устройстве B.

  6. В onCreate () мы запустим PlusClient # connect ()

  7. Поскольку той же учетной записи Google, ранее предоставившей тот же набор разрешений /областей действия на другом устройстве, будет вызываться onConnected ().

В предыдущей последовательности точка 7 не встречалась . Непосредственное соединение никогда не произойдет. Это правда, что если я делаю mLastConnectionResult.startResolutionForResult (), он будет подключаться без повторного запроса тех же разрешений, но соединение, инициированное из onCreate, приведет к onConnectionFailed (), если приложение только что было установлено.

Я не уверен, что я неправильно понял, и это просто не предназначено для такой работы (но это то, что я понял из видео), или это просто не работает, как ожидалось.

Любая помощь будет высоко ценится.

Спасибо.

ПРИМЕЧАНИЯ: - приложение правильно настроено в консоли разработчиков Google Play - Я запрашиваю одну и ту же область видимости в двух разных клиентах, поскольку на самом деле это одно и то же приложение - на обоих устройствах есть только одна учетная запись Google. - Я запускаю этот эксперимент, используя пример приложения в github

4 голоса | спросил GaRRaPeTa 2 PMpWed, 02 Apr 2014 21:27:50 +040027Wednesday 2014, 21:27:50

3 ответа


0

Я тоже с этим боролся, и оказалось, что кроссплатформенный SSO проверяется только при первом открытии приложения (первый запуск после установки). Очистка кеша и данных для Google Play Services сработала для меня.

ответил Ran Dahan 22 PMpTue, 22 Apr 2014 20:59:33 +040059Tuesday 2014, 20:59:33
0

Я не уверен, что здесь происходит. Если вы нажмете кнопку входа в систему, появится ли запрос на повторное согласие или вы вошли в систему автоматически? (В целях диагностики; вам не нужно это делать.)

Система единого входа для нескольких устройств должна работать от Android до Интернета и наоборот, а также от Android до Android. Если на устройстве имеется более одной учетной записи, вы не можете избежать выбора учетной записи, но здесь это не так.

Я только что проверил это на примере приложения по адресу https://github.com/googleplus /gplus-quickstart-android и, похоже, работает нормально. Я также убедился бы, что все работает с областью https://www.googleapis.com/auth/plus.login, прежде чем экспериментировать с чем-то еще.

ответил mjs 14 PMpMon, 14 Apr 2014 18:43:36 +040043Monday 2014, 18:43:36
0

Чтобы уточнить еще, вот ответ, который я получил от Google по этому вопросу:

  

Единый вход в систему на разных устройствах (CDSSO) запускается только один раз для каждого приложения   Устройство, как вы сказали. Это дорогая операция   все учетные записи на устройстве), и это обычно не даст никакого нового результата   после первого запуска.

     

У вас есть несколько вариантов, чтобы предоставить своим пользователям удобный вход   опыт после удаления /переустановки:

     
  • Используйте Smartlock for Passwords, который был создан для такого рода вещей. Вы можете сохранить идентификатор пользователя в Smartlock, а затем осуществлять вход без участия пользователя, даже когда пользователь получает новое устройство.
  •   
  • Сохраните где-нибудь учетную запись пользователя в Google, а затем вызовите setAccount () в GoogleSignInOptions. Это заставит тихий вход в систему работать, если пользователь уже входил в эту учетную запись.
  •   
ответил virusman 1 J0000006Europe/Moscow 2017, 16:24:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132