Google API REST 调用仅返回用户 ID 和图片。如何使用 Google API REST 请求获取完整的用户信息?

问题描述 投票:0回答:1

我尝试通过 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 范围。

scopes added

我知道添加的范围可能需要 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?

google-api google-oauth access-token
1个回答
7
投票

我发现了我的错误。我没有在主要请求中提供范围。因此,接收谷歌帐户信息的操作如下:

获取请求:

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"
}
© www.soinside.com 2019 - 2024. All rights reserved.