Как проверить валидность авторизации мобильного приложения (Google Play Game Services) на стороне backend сервера?
Здравствуйте!
Я прошу прощения за формулировку вопроса, никак не мог придумать более короткое и емкое название. Я постараюсь компенсировать этот недостаток более развернутым описанием.
Суть моей задачи
Я занимаюсь разработкой мультиплеерной игры (мобильное приложение написанное на Unity5), и сейчас у меня остро стал вопрос о сохранении данных пользователей (данные об игровой деятельности). От использования стандартных средств, которые предлагает Google Play Game Services я сразу отказался, поскольку отсутствие доступа к данным пользователя не допустимо и в случае возникновения проблем в ходе миграции на новые версии клиента я никому ничем помочь не смогу. В качестве решения я твердо решил использовать свой сервер для хранения этих данных.
Моя идея реализации
Сервер решил писать на node.js, и учитывая то, что я новичок в проектировании и разработке backend приложений, брать на себя ответственность за обеспечение полного процесса авторизации (регистрация, процесс авторизации, восстановление паролей и прочие процессы обеспечивающие безопасность данных) я не хочу и стараюсь максимально избежать этого.
На стороне клиента у меня вопросов не возникло, поскольку я использую Google Play Game Services SDK, который позволяет авторизоваться приложению используя системный аккаунт устройства. А вот на стороне своего сервера я пока не очень ясно представляю, как мне (клиенту) его убедить в том, что я действительно "Вася Пупкин" и что я действительно прошел авторизацию у Google.
Схема работы
Схему авторизации на сервере я вижу в следующем виде:
- клиент авторизуется используя Google Play Game Services, получает данные (токены и прочую хрень);
- делает свои локальные дела;
- настает момент когда клиенту надо прочитать/записать данные;
- клиент формирует запрос к серверу, "подписывает" его данными полученными от Google (токены и прочую магическую хрень);
- сервер получает заброс и данные авторизации;
- сервер делает некоторые магические операции, и по токену, мылу и прочей магической инфе, получает подтверждение/опровержение авторизации у сервисов Google;
- выполняет дальнейшие действия по алгоритму (шлет в лес самозванца или записывает/отдает информацию);
Ну и собственно сам вопрос Как мне проверить у Google авторизован ли пользователь и какие данные необходимы для этой проверки? И еще, пользуясь случаем, хотелось бы узнать ваше мнение в общем о самой схеме и ее рациональности, может кто-то подскажет еще варианты?
Спасибо! Особенно тем, кто смог осилить всю эту кучу текста!
Wol_fi: спасибо за ответ! Всего-то "https://www.googleapis.com/oauth2/v1/tokeninfo" Такой короткий ответ, на такой длинный, и как оказалось, элементарный вопрос =)
Если Вас не затруднит, переместите Ваш комментарий в ответ, я отмечу его решением.
Еще раз спасибо!
Выношу ответ из комментариев =)
Если не ошибаюсь, авторизация Google Play Game Services базируется на гугловском же oauth. Посмотрите здесь https://developers.google.com/identity/protocols/O... пункт Validating the token.