Intereting Posts
КоординаторLayout игнорирует поля для просмотров с привязкой Клиент jquery signalr работает, но в java его нельзя заставить работать Откройте страницу facebook из приложения Android (в версии для facebook> v11) Android Studio: Ошибка: /android-studio/gradle/gradle-2.4/lib/plugins/gradle-diagnostics-2.4.jar (Нет такого файла или каталога) Mkdirs возвращает false для каталога на SD-карте, в то время как родительский каталог доступен для записи Android: сообщение Http с параметрами не работает Почему агент пользователя отправляется как «Apache-HttpClient / UNAVAILABLE (java 1.4)» Получить идентификатор открытой камеры Как показать изображение в строке таблицы на основе размера Как получить информацию о приложении или пакете из файла apk в приложении Android в среде Android Переключить язык программно на Android-устройство Функция записи теста Espresso в Android Studio 2.2 Предупреждение установки студии Android: папка не была перемещена Каковы наилучшие практики для SQLite на Android? GoogleCloudMessaging не может быть разрешен для типа

Могу ли я использовать 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 задач. Могут быть некоторые лучшие способы сделать это сейчас.