IOS & node.js: как проверить переданный токен доступа? - программирование

IOS & node.js: как проверить переданный токен доступа?

У меня есть iOS, который использует поставщиков OAuth и OAuth2 (Facebook, Google, Twitter и т.д.) для проверки пользователя и предоставления токенов доступа. Помимо минимальных данных, таких как имя и адрес электронной почты, приложение не использует эти службы ни для чего, кроме аутентификации.

Затем приложение отправляет токен доступа на сервер, чтобы указать, что пользователь аутентифицирован.

Сервер написан в Node.js, и перед тем, как делать что-либо, ему необходимо проверить доступный токен доступа к правильной службе OAuth *.

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

Кто-нибудь знает какие-либо модули Node.js, которые могут выполнить простую проверку предоставленного токена доступа?

4b9b3361

Ответ 1

Насколько мне известно (и насколько я могу судить по чтению спецификаций), спецификации OAuth и OAuth 2 не указывают ни одной конечной точки для проверки маркера доступа. Это означает, что вам понадобится специальный код для каждого из поставщиков для проверки только токена доступа.

Я посмотрел, что делать для конечных точек, которые вы указали:

Facebook

Кажется, другие использовали графический API 'me' endpoint для Facebook, чтобы проверить, действительно ли токен. В принципе, запрос:

https://graph.facebook.com/me?access_token={accessToken}

Google

Google имеет выделенную конечную точку для получения информации о токене доступа, хорошая документация. В принципе, запрос:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken}

Twitter

У Твиттера, похоже, нет действительно очевидного способа сделать это. Я подозреваю, что, поскольку данные настроек учетной записи довольно статичны, это может быть лучший способ проверки (выборка твитов, по-видимому, будет иметь более высокую задержку?), поэтому вы можете запросить (с соответствующей подписью OAuth и т.д.):

https://api.twitter.com/1.1/account/settings.json

Обратите внимание, что этот API ограничен скоростью до 15 раз за окно.

В целом это кажется более сложным, чем вначале. Возможно, было бы лучше реализовать некоторую поддержку сеанса/авторизации на сервере. В принципе, вы можете проверить внешний токен OAuth, который вы получаете один раз, а затем назначить пользователю собственный токен сеанса, с которым вы аутентифицируете идентификатор пользователя (адрес электронной почты, идентификатор FB и т.д.) На своем собственном сервере, вместо того, чтобы продолжать делать запросы поставщикам OAuth для каждого вашего запроса.

Надеюсь, что это поможет!

Ответ 2

Чтобы получить информацию о токене от использования Google, будьте осторожны с версией api https://www.googleapis.com/oauth2/v3/tokeninfo?access_token={accessToken}