Android: Google SSO - OAuth или AccountManager? Или оба? - PullRequest
10 голосов
/ 29 марта 2012

После прочтения всевозможных сообщений в Stackoverflow и различной документации, в том числе на сайте http://code.google.com/p/google-api-java-client/, я чувствую себя совершенно сбитым с толку.Так может кто-нибудь объяснить мне лучший способ достижения следующего:

  1. Позвольте пользователю одобрить мое приложение.Мне все равно, если это сделать, войдя в зарегистрированную учетную запись Google в учетных записях / настройках и одобрив приложение (предпочтительным способом), или позвонив на страницу аутентификации Google OAuth
  2. Получите токен аутентификации, который можно использоватьсвязаться с Google Reader

Еще одна путаница для меня - я смог одобрить свое приложение с помощью AccountManager и получить от него токен авторизации, но оно не будет работать с Google Reader.Итак, как сбалансировать данные учетной записи из AccountManager и OAuth?Нужно ли мне что-то еще делать с OAuth после того, как я получу одобрение пользователя в настройках AccountManager?

Пример кода был бы неплох, но я ищу более четкое объяснение того, как все эти части связаны друг с другом

Ответы [ 2 ]

6 голосов
/ 10 апреля 2012

Диспетчер учетных записей позволяет получать токены аутентификации для различных сервисов. Под капотом находятся разные конкретные реализации: ClientLogin, OAuth и т. Д. Чтобы заставить его работать, скажем, с Google Reader, вам нужно передать соответствующий тип токена. Для ClientLogin это короткие строки, такие как «ах» (App Engine) и «читатель» (Google Reader). Для OAuth они являются областями, как определено каждой службой. Итак, что вы передаете в качестве параметра authTokenType?

Получение токена является асинхронным, поскольку оно может включать доступ к сети. Если есть кэшированный токен, он будет возвращен сразу же, если он действителен. Поток не так сложен, см. Ссылку выше для красивой картины. Получив токен, вы помещаете его в соответствующий заголовок и используете API в соответствии со спецификацией.

4 голосов
/ 10 апреля 2012

Вот учебный курс по Android для AccountManager, который может помочь:

http://developer.android.com/training/id-auth/authenticate.html

Кроме того, использование AccountManager с Google Reader в настоящее время является единственным предпочтительным способом сделать это.Направление ваших пользователей на страницу входа в систему с WebView не очень безопасно, и использование API-интерфейса Google, насколько я знаю, не поддерживается (я также не уверен, использует ли Reader OAuth2 или нет).

...