Как я могу проверить токен доступа 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 на самом деле является тем, кем они себя называют. Если есть другой способ сделать это, я с удовольствием попробую.