Разрешить пользователю использовать REST API через сервисы Google
У меня есть три актера:
- (мой) RESTful API за SSL.
- (мое) приложение для Android с кнопкой Google "Войти".
- (мое) Веб-приложение, которое позволяет пользователям регистрироваться с помощью своей учетной записи Google через OAuth.
То, что я хотел бы иметь возможность сделать это:
- Создайте что-нибудь, когда пользователь войдет в систему на мобильном устройстве.
- Сравните это с чем-то еще, что я могу создать на сервере для этой учетной записи Google.
- Если две части совпадают, дайте приложению вновь сгенерированный токен, который он может использовать во всех последующих вызовах 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
Я попробовал это однажды, но мое приложение и веб-интерфейс не были достаточно зрелыми, я постараюсь как можно скорее, и я дам вам знать, смогу ли я заставить его работать как положено (как типичный пример веб-приложения)...
Надеюсь, это поможет кому-нибудь еще.