Я создаю приложение для Android как часть архитектуры клиент/сервер, где мой сервер будет предоставлять услугу клиенту Android. Сервер не будет связываться с каким-либо сервером Google, но ему необходимо будет аутентифицировать пользователя через свою учетную запись gmail. То есть сервер должен быть уверен, что запросы http (s), поступающие с телефона, действительно принадлежат человеку с указанной учетной записью gmail.
Я изучал платформу Android C2DM, которую я, безусловно, могу использовать для передачи данных, связанных с обслуживанием, туда и обратно, но как я могу использовать аутентификацию учетной записи Google между телефоном Android и сторонним (не-Google) сервером?
Будет ли работать Oath2.0 для этого, или Oath2.0 используется только для прямой аутентификации между телефоном и службами Google?
Вы не указали, какой код языка вы собираетесь использовать на своем сервере.
Более простой способ использования C2DM находится в Google App Engine, который поставляется с встроенной поддержкой интеграции Android с C2DM.
Если это не так (EX: youre using php на вашем собственном сервере), я бы посмотрел на AccountManager, который может предоставить вам токен аутентификации (пользователь должен его разрешить).
При регистрации нового устройства на ваш C2DM-сервер вам потребуется устройство для обмена также токеном, чтобы вы могли узнать, действительно ли пользователь является владельцем этой учетной записи gmail через соединение между вашим сервером и серверами Google.
:)
Я думаю, вы, должно быть, получили ответ на ваш запрос. Но я все же хотел бы ответить на этот вопрос, чтобы помочь другим пользователям, которые заинтересованы в достижении чего-то подобного.
Таким образом, чтобы использовать токен доступа к учетной записи google для аутентификации и авторизации вашего пользователя приложения против ваших собственных услуг, вам необходимо выполнить следующие шаги.
iss: always accounts.google.com
Ауд: идентификатор клиента веб-компонента проекта
azp: идентификатор клиента компонента приложения Android для проекта
email: электронное письмо, которое идентифицирует пользователя, запрашивающего токен, вместе с некоторыми другими полями.
Передайте этот токен вашему веб-компоненту (например, веб-сервисам) через https (обязательно), где уже сохранены веб-компонент и идентификатор клиента компонента Android.
После декодирования полученного токена JWT ID на сервере проверьте, равны ли параметры "aud" идентификатора клиента и идентификатора веб-компонента и, следовательно, аутентифицируют пользователя.
Идентификатор пользователя можно получить, прочитав параметр электронной почты токена JWT ID, который указывает идентификатор электронной почты, предоставленный для доступа к токену идентификатора в приложении Android при выполнении метода GoogleAuthUtil.getToken().
Примечание. Идентификатор ID на Android можно извлечь, выполнив команду GoogleAuthUtil.getToken(), если это одно и то же приложение, указанное одним и тем же сертификатом, указанное при создании компонента Android в рамках проекта на Google Cloud Console.
Более подробную информацию можно найти на странице " https://developers.google.com/accounts/docs/CrossClientAuth "