我尝试通过 API 请求访问 Google 用户信息;
https://www.googleapis.com/oauth2/v1/userinfo?access_token=ya29.a0Ael9sCMYNzgxZT27Cb....
我得到的回复只是 ID 和个人资料图片:
{
"id": "1.....",
"picture": "https://lh3.googleusercontent.com/a-/ACB-R5Sg...."
}
我需要更多用户信息:电子邮件、姓名等
我已在开发人员控制台中添加了 user.profile 和 userinfo.email 以及 userinfo.profile 范围。
我知道添加的范围可能需要 5 分钟甚至几个小时才能工作,但我在 12 小时前添加了它。
如何修复我的 API REST 调用以从 Google API 获取更多用户信息?
编辑
这个问题是一样的,但答案对我不起作用。这个要求:
https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses&access_token=ya29.a0...&key=498...apps.googleusercontent.com
我遇到
Request had insufficient authentication scopes
错误。
也许我在那里提供了错误的密钥?那么 api 密钥应该是什么,它来自凭据页面的客户端 ID?
我发现了我的错误。我没有在主要请求中提供范围。因此,接收谷歌帐户信息的操作如下:
获取请求:
https://accounts.google.com/o/oauth2/v2/auth?
scope=https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/userinfo.email
&redirect_uri=https://www.youtube.com/
&response_type=code
&client_id=498...apps.googleusercontent.com
使用代码注册后,此代码打开了我想要的页面(在本例中为 youtube):
https://www.youtube.com/?
code=4%....
&scope=email+profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+openid
&prompt=consent
我将给定的代码复制到 POST 请求:
https://oauth2.googleapis.com/token?
code=4%2...
&client_id=498....apps.googleusercontent.com
&client_secret=GO...
&redirect_uri=https://www.youtube.com/
&grant_type=authorization_code
并得到:
{
"access_token": "ya29....",
"expires_in": 3599,
"scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
"token_type": "Bearer",
"id_token": "eyJhb...."
}
现在有最后的请求
https://www.googleapis.com/oauth2/v3/userinfo?access_token=ya29...
我收到更多信息:
{
"sub": "10....",
"name": "V....",
"given_name": "V....",
"family_name": "L....",
"picture": "https....",
"email": "vy...",
"email_verified": true,
"locale": "lt"
}