如何使用谷歌访问令牌获取用户信息
Posted
技术标签:
【中文标题】如何使用谷歌访问令牌获取用户信息【英文标题】:How to get user info ussing google access token 【发布时间】:2021-12-23 22:34:46 【问题描述】:您好,我正在开发 google oauth2 登录,但我不知道如何使用 access 令牌或 id 令牌使用此 url 获取用户信息
https://www.googleapis.com/oauth2/v3/userinfo 在 Authorization 标头中传递访问令牌会返回此 json: "sub": "100366573866312827626",
"picture": "https://lh3.googleusercontent.com/a/default-user=s96-c"
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=id_token得到这个json
"iss": "https://accounts.google.com",
"azp": "375890336523-u4rpach5688ltoc0v4mof1r7j70gem95.apps.googleusercontent.com",
"aud": "375890336523-u4rpach5688ltoc0v4mof1r7j70gem95.apps.googleusercontent.com",
"sub": "100366573866312827626",
"at_hash": "htkn2tQqV4Ff4EmrtPDh9w",
"iat": "1636631006",
"exp": "1636634606",
"alg": "RS256",
"kid": "27c72619d0935a290c41c3f010167138685f7e53",
"typ": "JWT"
但在这两个 json 中都没有任何用户信息,如用户名或电子邮件
感谢您的宝贵时间,抱歉我的英语不是我的母语
【问题讨论】:
【参考方案1】:确保您在授权用户时请求了配置文件范围。
使用您的用户授权您的应用程序时返回的访问令牌。您可以通过调用People.get 方法获取用户个人资料信息
curl \
'https://people.googleapis.com/v1/people/me?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
用户信息端点会给你一点信息,但不如使用用户信息端点那么多。
Google 并不总是在 id 令牌中返回用户声明,所以我不会尝试依赖它。
【讨论】:
您好,我对 oauth 了解不多,我如何获得配置文件范围,以及您所说的 YOUR_API_KEY 是指我的 client_id 吗? 现在我得到了全名和 emial 但在 2 个请求中,将范围配置文件和 emal 分别放入,有可能仅在 1 个请求中获取所有信息?以上是关于如何使用谷歌访问令牌获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章
laravel socialite 从谷歌授权码获取谷歌访问令牌