Как проверить токен доступа для аутентификации Google?
Мне нужно как-то запросить Google и спросить: действителен ли [данный токен доступа] для [example@example.com] учетной записи Google?
Короткая версия :
Понятно, как токен доступа, предоставляемый через Аутентификация Google Api :: OAuth для веб-приложений , может использоваться для запроса данных из ряда служб Google. Не ясно, как проверить, является ли данный токен доступа действительным для данной учетной записи Google. Я хотел бы знать, как.
Длинная версия :
Я разрабатываю API, который использует аутентификацию на основе токенов. Токен будет возвращен при предоставлении действительного имени пользователя + пароля или при предоставлении стороннего токена из любой из N проверяемых служб.
Одним из сторонних сервисов будет Google, позволяющий пользователю проходить аутентификацию на моем сервисе, используя свою учетную запись Google. Позже это будет расширено, чтобы включить учетные записи Yahoo, доверенных поставщиков OpenID и т. Д.
Схематический пример доступа на основе Google:
альтернативный текст http://webignition.net/images/figures/auth_figure002.png
Сущность 'API' находится под моим полным контролем. Объект «открытый интерфейс» - это любое веб-приложение или приложение для настольного компьютера. Некоторые публичные интерфейсы находятся под моим контролем, другие не будут, а другие, о которых я, возможно, даже не узнаю.
Поэтому я не могу доверять токену, предоставленному API на шаге 3. Он будет предоставлен вместе с соответствующим адресом электронной почты учетной записи Google.
Мне нужно как-то запросить Google и спросить: Этот токен доступа действителен для example@example.com?
В этом случае example@example.com является уникальным идентификатором учетной записи Google - адресом электронной почты, который кто-то использует для входа в свою учетную запись Google. Нельзя считать, что это адрес Gmail - кто-то может иметь учетную запись Google без учетной записи Gmail.
В документации Google четко указано, как с помощью токена доступа можно получать данные из ряда служб Google. Ничто не говорит о том, как вы можете проверить, является ли данный токен доступа действительным с самого начала.
Обновление
Токен действителен для N сервисов Google. Я не могу использовать токен для службы Google в качестве средства проверки, поскольку я не буду знать, какое подмножество всех служб Google на самом деле использует данный пользователь.
Более того, я никогда не буду использовать токен аутентификации Google для доступа к каким-либо службам Google, просто для проверки того, что предполагаемый пользователь Google на самом деле является тем, кем они себя называют. Если есть другой способ сделать это, я с удовольствием попробую.