Разрешить пользователю использовать REST API через сервисы Google

У меня есть три актера:

  1. (мой) RESTful API за SSL.
  2. (мое) приложение для Android с кнопкой Google "Войти".
  3. (мое) Веб-приложение, которое позволяет пользователям регистрироваться с помощью своей учетной записи Google через OAuth.

То, что я хотел бы иметь возможность сделать это:

  1. Создайте что-нибудь, когда пользователь войдет в систему на мобильном устройстве.
  2. Сравните это с чем-то еще, что я могу создать на сервере для этой учетной записи Google.
  3. Если две части совпадают, дайте приложению вновь сгенерированный токен, который он может использовать во всех последующих вызовах API в течение определенного периода времени.

Как мне это делать? Я читаю документацию OAuth, но я пытаюсь понять, что это за "что-то" и "что-то еще". Любая помощь будет оценена.

2 ответа

Решение

Я решил это, но я не уверен, что это лучший способ сделать это.

Для Google я отправляю пользовательский UID и токен авторизации, полученные в приложении GoogleAuthUtil.getToken(), На сервере я иду в https://www.googleapis.com/oauth2/v1/tokeninfo?fields=user_id&access_token={token}, где {token} это токен, который я получил от своего мобильного приложения. Если user_id в ответе OAuth2 соответствует uid который был предоставлен API и тому uid соответствует некоторой записи пользователя в моей базе данных, этот пользователь считается аутентифицированным.

Для Facebook я делаю то же самое, за исключением того, что я использую session.getAccessToken(...) получить токен на стороне приложения и https://graph.facebook.com/me?fields=id&access_token={token} чтобы проверить это с Facebook.

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

https://developers.google.com/identity/protocols/OAuth2InstalledApp

Но этого недостаточно, это хорошее чтение, но не решает наши проблемы вообще.

Более полезные материалы по этой теме: "Это приложение быстрого запуска позволяет начать работу с Google Identity Toolkit на Android примерно за 30 минут".):

https://developers.google.com/identity/toolkit/android/quickstart

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

Надеюсь, это поможет кому-нибудь еще.

Другие вопросы по тегам