2012-03-28 3 views
10

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

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

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

пример

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

+0

Что вы подразумеваете под «утверждением» вашего приложения? Вы пытаетесь использовать свою личность в своем приложении (OpenID) или имеете доступ к вашим данным пользователя с помощью Google (OAuth)? – Anirudh

+0

Ярмарка вопрос. В этом конкретном случае я хочу иметь возможность подписывать пользователя на свою учетную запись Google Reader, используя зарегистрированную в Google учетную запись Google. В качестве альтернативы (если это невозможно), я бы не возражал (но не предпочитаю) перенаправлять пользователя на страницу подтверждения приложения OAuth Google. – Bostone

+0

Фактическое извлечение информации из учетной записи Google Reader выполняется с помощью удаленного сервера, приложение должно пройти только соответствующий токен аутентификации – Bostone

ответ

6

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

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

+0

Как я уже сказал, я предпочел бы подписывать пользователя с существующей учетной записью Google. Есть ли какая-либо документация по этим «коротким строкам», которая описывает, что поддерживается? – Bostone

+0

Правильный термин - это «имя службы». Это не полный список, но здесь больше всего: http://code.google.com/apis/gdata/faq.html#clientlogin. Для получения общей информации об аутентификации в сервисах Google вы можете начать здесь: https://developers.google.com/accounts/. Учетная запись Android - это просто интерфейс для них. –

+0

Спасибо, Николай.Я принимаю ваш ответ, так как я уверен, что смогу выяснить остальное в этой точке. – Bostone

4

Вот Android класс подготовки на AccountManager, которые могли бы помочь:

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

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

+0

Полезная ссылка, спасибо – Bostone

 Смежные вопросы

  • Нет связанных вопросов^_^