Аутентификация с App Engine из приложения Android с Federated Login (OpenID)

Я следил за инструкцией Ник Джонсона « Аутентификация против Android-движка с Android»

Есть ли способ получить тот же рабочий процесс (без веб-входа) с Federated Login (даже если поддержка ограничена учетными записями Google)?

[Изменить] Дополнительная информация

Текущая настройка включает в себя:

  • UserService App Engine настроен для входа в федеративный логин (openId..gmail, aol, myspace?, …)
  • Facebook (OAuth)
  • Twitter (OAuth)

Все типы аутентификации завернуты в UserService , поэтому я могу вызвать UserService.getCurrentUser() (аналогично UserService Appengine, но поддерживает твиттер и facebook).

У учетных записей могут быть связаны несколько методов аутентификации.

Пока все клиенты работают в сети, и все работает хорошо. : D

Я бы хотел:

  1. Добавьте публичный Api (для веб-и родных мобильных приложений),
  2. Используйте Api для собственных мобильных приложений.

Каковы варианты?

Я думал о том, чтобы ограничить аутентификацию учетных записей Google для Android-приложений, в надежде избежать веб-входа на экране. Тем не менее, было бы неплохо поддержать facebook и twitter для веб-сайта Api.

Solutions Collecting From Web of "Аутентификация с App Engine из приложения Android с Federated Login (OpenID)"

Нет, OpenID является стандартом auth на основе браузера – он полагается на то, что пользователь перенаправляется на внешнюю страницу авторизации, а затем обратно на страницу приложения.

Вы можете сделать это через WebView внутри Dialog WebView пользовательский интерфейс. См. Проект с открытым исходным кодом LeanEngine для примера реализации: сервер и клиент . Сервер немного сложнее, так как он поддерживает как Facebook, так и OpenID. Только авторизация OpenID будет проще. В основном вам нужен только пример клиента.

Однако, если вам не нужен OpenID и вы хотите ограничить пользователей аккаунтом Google, вы можете использовать API Google ClientLogin . Пример использования .

Я изучал эту тему уже несколько недель, и я наконец увидел свет в конце туннеля. Я надеюсь, что вы, по крайней мере, получите несколько указателей от моих исследований. Во-первых, я только что понял (http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theythe-same-thing), что OpenID и OAuth не То же самое, хотя они могут использоваться вместе. Приложение Google App Engine настроено с помощью API учетных записей Google, и в настоящее время у меня есть только клиент Android. Я религиозный приверженец супер знаменитого блога Ника Джонсона, о котором вы говорили выше. Таким образом, я использовал экземпляр AccountManager в клиенте Android для бесшовной аутентификации с моим приложением App Engine, не спрашивая у пользователя учетные данные и не перенаправляя браузер / веб-просмотр и т. Д.

Так же, как вы хотите открыть публичный API для своего приложения GAE, я также хочу расширить свою клиентскую базу, чтобы иметь других клиентов, таких как веб-клиенты, API-интерфейсы python, клиенты iOS и т. Д., И ни один из них не имеет этого удобного AccountManager. Итак, OAuth – это очевидный выбор. Вот статья из Икай Лан из команды Google App Engine, демонстрирующая использование клиента python с использованием OAuth для аутентификации против приложения GAE: http://ikaisays.com/2011/05/26/setting-up-an-oauth-provider -он-Google-приложение-двигатель /

Смешно, я думал, что использование Oauth на клиенте требует настройки приложения GAE с помощью входа OpenID / Federated. Но это не так. Таким образом, решение для меня и, вероятно, для вас тоже простое – на клиенте Android используйте AccountManager для блога Nick. И на других клиентах используйте Oauth и перенаправьте пользователя на страницу учетных записей Google, чтобы включить аутентификацию (см. Статью Ikai Lan, о которой я говорил в предыдущем абзаце).

Для вас, однако, вы можете избежать входа в систему на базе Android-клиента, но нигде больше. Вы должны как-то аутентифицировать пользователя хотя бы один раз. Надеемся, что вход в систему на основе браузера произойдет только в первый раз, а браузер кэширует будущие запросы.

Удачи!