Как уже упоминалось, вы можете отправить GET на https://www.googleapis.com/oauth2/v3/userinfo,, используя только что полученный токен OAuth2, и вы получите ответ с некоторой информацией о пользователе (идентификатор, имя и т. Д.).
Стоит также упомянуть, что Google реализует OpenID Connect и что эта конечная точка информации пользователя является лишь одной из его частей.
OpenID Connect - это уровень аутентификации поверх OAuth2. При обмене авторизацией code
в конечной точке токена Google вы получаете токен доступа (параметр access_token
), а также токен OpenID Connect ID (параметр id_token
).
Оба эти токена JWT (веб-токен JSON, http://tools.ietf.org/html/draft-ietf-oauth-json-web-token).
Если вы расшифруете их, вы получите некоторые утверждения, включая id пользователя. Если вы свяжете этот идентификатор с пользователем в вашей БД, вы можете сразу же идентифицировать его, не прибегая к дополнительной GET-информации пользователя (экономит время).
Как упоминалось в комментариях, эти токены подписаны закрытым ключом Google, и вы можете проверить подпись с помощью открытого ключа Google (https://www.googleapis.com/oauth2/v3/certs), чтобы убедиться, что они подлинные.
Вы можете увидеть, что находится в JWT, вставив его в https://jwt.io/ (прокрутите вниз для отладчика JWT). Утверждения выглядят примерно так:
{
"iss":"accounts.google.com",
"id":"1625346125341653",
"cid":"8932346534566-hoaf42fgdfgie1lm5nnl5675g7f167ovk8.apps.googleusercontent.com",
"aud":"8932346534566-hoaf42fgdfgie1lm5nnl5675g7f167ovk8.apps.googleusercontent.com",
"token_hash":"WQfLjdG1mDJHgJutmkjhKDCdA",
"iat":1567923785,
"exp":1350926995
}
Существуют также библиотеки для различных языков программирования для программного декодирования JWT.
PS : чтобы получить обновленный список URL-адресов и функций, поддерживаемых поставщиком OpenID Connect Google, вы можете проверить этот URL: https://accounts.google.com/.well-known/openid-configuration.