Intereting Posts
Принудительный режим погружения отключен после показа мягкой клавиатуры Android – Как круговое масштабирование / увеличение части изображения? Создайте приложение по умолчанию для открытия определенного файла Ошибка Кордовой / Ионной сборки (иногда): не требуется требуемая среда Верхние и нижние разделители не отображаются в списке Android Не закрывайте меню опций при нажатии пункта меню Android-плеер Android возвращает IllegalStateException Задавать высоту изображения как программную Как создать собственный сервис android и использовать связующее для связи с ним? «RuntimeException: выполнение паузы активности, которая не возобновляется» Какое намерение должно открыть экран использования данных (из настроек) GetAllNetworkInfo () устарел. Как использовать getAllNetworks () для проверки сетевого соединения Android? Получите Мобильный нет от реального устройства Как открыть галерею телефонов через код Lollipop API для управления значком Alarm в строке состояния

Могу ли я использовать AccountManager Android для получения токена доступа OAuth для AppEngine?

У меня есть клиент Android на моем сервере AppEngine, используя оба аккаунта Google. Я хотел бы использовать AccountManager для получения доступа к Token для OAuth. Пока я использую ClientLogin, но я хотел бы переключиться на OAuth.

Настройка OAuth на AppEngine проста – я следил за этой статьей . Но клиентская сторона является загадкой, в частности я не знаю, что использовать для области, в терминах AccountManager authTokenType . Для ClientLogin я использую «ah» для authTokenType . Но как насчет OAuth?

Solutions Collecting From Web of "Могу ли я использовать AccountManager Android для получения токена доступа OAuth для AppEngine?"

На сегодняшний день вы можете использовать API сервисов Google Play для Android для аутентификации Oauth 2.0 на Android. Затем вы можете использовать метод, описанный @nivco, чтобы получить userinfo для appengine. Я еще этого не делал, но я планирую сделать то, о чем вы говорите.

https://developers.google.com/android/google-play-services/authentication

Я не уверен, что вы пытаетесь сделать, это возможно с помощью App Engine OAuthService, используемого в статье, о которой вы говорите. Также утверждается, что AppEngine OAuthService поддерживает только OAuth 1, но Android поддерживает только OAuth 2 :), поэтому вы ввернуты.

Если вы хотите выполнить проверку подлинности через Android – App Engine, я бы сделал следующее:

  1. В Android: получить токен доступа для API UserInfo (scope = https://www.googleapis.com/auth/userinfo.email и https://www.googleapis.com/auth/userinfo.profile ) из AccountManager.
  2. Передайте токен доступа в App Engine в параметре URL запроса, который вы делаете с Android на AppEngine (убедитесь, что используете HTTPS, чтобы избежать перехвата!).
  3. На стороне App Engine: используйте токен доступа для чтения идентификатора пользователя с помощью API UserInfo . Это в основном используется OpenID Connect!
  4. Затем вы можете использовать информацию, полученную вами из API UserInfo для аутентификации пользователя. Идентификатор электронной почты и идентификатор пользователя, который вы получите из API UserInfo, эквивалентны идентификатору электронной почты и идентификатора пользователя, который вы получите из UserService AppEngine =>, которому вы можете доверять!

PS: Я описал получение токенов OAuth 2 с помощью AccountManager Android в этой статье . Это было написано до мороженого сэндвич, но я прыгаю, это все еще действует. В основном authTokenType должен быть oauth2:{scopes} , например, oauth2:https://www.googleapis.com/auth/tasks для API задач. Могут быть некоторые лучшие способы сделать это сейчас.