1

Я создаю приложение для Android как часть архитектуры клиент/сервер, где мой сервер будет предоставлять услугу клиенту Android. Сервер не будет связываться с каким-либо сервером Google, но ему необходимо будет аутентифицировать пользователя через свою учетную запись gmail. То есть сервер должен быть уверен, что запросы http (s), поступающие с телефона, действительно принадлежат человеку с указанной учетной записью gmail.Как мой сервер может аутентифицировать пользователей Android со своими учетными записями Google?

Я искал платформу C2DM для Android, которую я могу использовать для передачи данных, связанных с обслуживанием, туда и обратно, но как я могу использовать аутентификацию учетной записи Google между телефоном Android и сторонним (не-Google) сервером ?

Будет ли работать Oath2.0 для этого, или Oath2.0 используется только для прямой аутентификации между телефоном и услугами Google?

+1

C2DM устарела в пользу Google Cloud Messaging. См. Мой соответствующий вопрос [GCM] (http://stackoverflow.com/q/12361006/403455). –

ответ

2

Вы не указали, какой код языка вы собираетесь использовать на своем сервере.

Более простой способ использования C2DM находится в Google App Engine, который поставляется с встроенной поддержкой интеграции Android с C2DM.

Если это не так (EX: youre using php на вашем собственном сервере), я бы посмотрел на AccountManager, который может предоставить вам токен аутентификации (пользователь должен его разрешить).

При регистрации нового устройства на вашем сервере C2DM вам потребуется устройство для передачи также токена, чтобы вы могли узнать, действительно ли пользователь является владельцем этой учетной записи gmail через соединение между вашим сервером и Google Серверы.

:)

+1

Я не вижу здесь важного языка реализации - речь идет о технологии и протоколе, не так ли? Из того, что я могу сказать, C2DM не предоставляет механизм аутентификации учетным записям Google. –

0

Я думаю, вы должны получили ответ на свой запрос сейчас. Но я все же хотел бы ответить на этот вопрос, чтобы помочь другим пользователям, которые заинтересованы в достижении чего-то подобного.

Чтобы использовать токен доступа к учетным записям google для аутентификации и авторизации вашего приложения в соответствии с вашими собственными сервисами, вам необходимо выполнить следующие шаги.

  1. Создайте проект в Google Cloud Console с двумя компонентами (создайте компоненты, щелкнув «API» $ Auth> Credetials »на левой панели). Первым компонентом будет ваш веб-компонент (например, веб-службы), а второй компонент - ваше приложение для Android.
  2. Попробуйте получить токен доступа, запросив менеджер аккаунта в приложении Android, выполнив метод GoogleAuthUtil.getToken(), передав текущий контекст, идентификатор электронной почты (запрошенный с использованием диспетчера учетных записей) и область действия как («аудитория: сервер: клиент_ид:») ,
  3. Где находится параметр «Идентификатор клиента» веб-компонента, доступный в рамках проекта, созданного на Google Cloud Console.
  4. Метод вернет вам токен ID, закодированный как веб-маркер JSON или JWT.
  5. Этот идентификатор позволяет все, что требуется приложению для аутентификации пользователя на сервере.
  6. Идентификатор маркера состоит из следующих параметров

ISS: всегда accounts.google.ком

ауд: ИД клиента веб-компонента проекта

AZP: ИД клиента Андроида компонента приложения проекта

электронная почта: электронная почта, которая идентифицирует пользователя, запрашивающего маркер, а также с некоторыми другими полями.

  1. Pass этот маркер для вашего веб-компонента (например, веб-сервисов) через протокол HTTPS (обязательно), где веб-компонент и Android клиента компонент идентификаторы уже сохранены.

  2. После декодирования принятого маркера идентификатора JWT на сервере проверьте, равны ли идентификатор «id» идентификатора клиента и идентификатора клиента веб-компонента и, следовательно, аутентифицируют пользователя.

  3. Идентификатор пользователя можно получить, прочитав параметр электронной почты токена JWT ID, который указывает идентификатор электронной почты, предоставленный для доступа к токену идентификатора в приложении Android, при выполнении метода GoogleAuthUtil.getToken().

Примечание: ID маркер на андроиде может быть извлечено только путем выполнения GoogleAuthUtil.getToken(), если это одно и то же приложение, опаленное же сертификат указаны при создании андроида компонента в рамках проекта Google Cloud Console.

Более подробную информацию можно найти на "https://developers.google.com/accounts/docs/CrossClientAuth"