Как сервер приложений может связать учетные записи Google с устройством пользователя?

Я хочу, чтобы пользователи могли вводить данные с веб-сервера и/или собственного приложения для ПК и передавать их на выбранное ими устройство Android почти так же, как работает установка Google Play на устройстве.

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

Я не смог найти упоминания о том, как обрабатывать этот тип аутентификации в обмене сообщениями Google Cloud документацию по API, но нашел этот вопрос без ответа на форумах GCM.

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

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

Как я могу выполнить это на веб-сервере, а также на устройстве?

Какую информацию я могу использовать после аутентификации с помощью учетной записи Google, чтобы установить связь между двумя входами в систему?


person Jeff Axelrod    schedule 11.09.2012    source источник


Ответы (2)


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

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

На следующей диаграмме последовательности показана начальная регистрация из клиентского приложения Android:

первоначальная регистрация из клиентского приложения для Android

Следующая диаграмма показывает, что происходит, когда клиент хочет получить доступ к своему устройству из браузера:

клиент хочет получить доступ к своему устройству из браузера

Обратите внимание, что хотя это и не показано, клиентское приложение для Android теперь может при необходимости обмениваться данными с клиентским браузером через сервер приложений.

person Jeff Axelrod    schedule 12.09.2012

user_id, которое вы получаете с устройства при регистрации в GCM, должно совпадать с user_id, который вы получаете вместе с токеном OAuth для своего приложения. Просто сохраните токен OAuth и идентификатор регистрации в своем репозитории пользователей, связав их с user_id.

введите здесь описание изображения

person Paul Fryer    schedule 12.09.2012
comment
Я не уверен, как вы думаете, как здесь работает OAuth. Однако, насколько я знаю, OAuth не используется с GCM. GCM просто используется для отправки уведомлений (небольших) на устройство/приложение. Таким образом, полезная нагрузка вашего сообщения должна включать URL-адрес или другие данные для загрузки фактических материалов, которые вы хотите синхронизировать с вашим мобильным устройством. - person Paul Fryer; 12.09.2012
comment
хорошо, я вижу, куда вы идете с этим. Похоже, вы можете получить доступ к учетной записи Google на устройстве, проверьте это: stackoverflow.com/questions/2112965/ - person Paul Fryer; 12.09.2012
comment
Я думаю, вам нужно 3 вещи здесь. 1) токен oauth, который вы получили, когда ваш пользователь авторизовал ваше приложение в Google. 2) Адрес электронной почты Google этого пользователя. 3) Регистрационный идентификатор GCM. Вы храните oauth и электронную почту вместе, когда ваше приложение авторизовано. Вы храните идентификатор регистрации и адрес электронной почты вместе, когда включены push-уведомления. Теперь вы можете привязать токен oauth к электронной почте к регистрационному идентификатору (см. схему выше). - person Paul Fryer; 12.09.2012
comment
Похоже, что здесь лучше использовать поле user_id, а не адрес электронной почты. . Если вы не против обновить свою диаграмму этим, я проголосую и приму! - person Jeff Axelrod; 13.09.2012
comment
Отличная находка, Джефф! Вы правы, мы бы предпочли использовать идентификатор, который не изменится. Таким образом, электронная почта — плохой кандидат, но user_id, кажется, отвечает всем требованиям. Схема обновлена. - person Paul Fryer; 13.09.2012
comment
Мы должны попытаться собрать демонстрационный проект для этого. Я думаю, это помогло бы многим людям. - person Jeff Axelrod; 13.09.2012
comment
Вы уверены, что user_id из регистрации GCM совпадает с учетной записью Google? Я бы предположил, что если он есть вместе с регистрацией GCM, он связан с зарегистрированным разработчиком приложения, а не с пользователем. Либо так, либо это просто случайно сгенерированный идентификатор пользователя, уникальный для устройства. У вас есть документы, подтверждающие это? - person Jeff Axelrod; 13.09.2012
comment
Нет, я не уверен, я исходил из ваших комментариев :-) Я думал, что вы, возможно, исследовали это. Похоже, нам все еще нужно провести небольшое исследование, прежде чем мы сможем предложить это как жизнеспособное решение. Я добавлю его в свой список вещей, которые я изучаю... Кроме того, демонстрация этого была бы действительно здоровой, я уверен, что другие сочтут ее полезной - у вас есть на примете конкретные проекты? - person Paul Fryer; 13.09.2012
comment
давайте продолжим это обсуждение в чате - person Jeff Axelrod; 13.09.2012