Ответ 1
Насколько мне известно (и насколько я могу судить по чтению спецификаций), спецификации OAuth и OAuth 2 не указывают ни одной конечной точки для проверки маркера доступа. Это означает, что вам понадобится специальный код для каждого из поставщиков для проверки только токена доступа.
Я посмотрел, что делать для конечных точек, которые вы указали:
Кажется, другие использовали графический API 'me' endpoint для Facebook, чтобы проверить, действительно ли токен. В принципе, запрос:
https://graph.facebook.com/me?access_token={accessToken}
Google имеет выделенную конечную точку для получения информации о токене доступа, хорошая документация. В принципе, запрос:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken}
У Твиттера, похоже, нет действительно очевидного способа сделать это. Я подозреваю, что, поскольку данные настроек учетной записи довольно статичны, это может быть лучший способ проверки (выборка твитов, по-видимому, будет иметь более высокую задержку?), поэтому вы можете запросить (с соответствующей подписью OAuth и т.д.):
https://api.twitter.com/1.1/account/settings.json
Обратите внимание, что этот API ограничен скоростью до 15 раз за окно.
В целом это кажется более сложным, чем вначале. Возможно, было бы лучше реализовать некоторую поддержку сеанса/авторизации на сервере. В принципе, вы можете проверить внешний токен OAuth, который вы получаете один раз, а затем назначить пользователю собственный токен сеанса, с которым вы аутентифицируете идентификатор пользователя (адрес электронной почты, идентификатор FB и т.д.) На своем собственном сервере, вместо того, чтобы продолжать делать запросы поставщикам OAuth для каждого вашего запроса.
Надеюсь, что это поможет!