google + api 中缺少 name、given_name 和 family_name json 属性获取用户信息
Posted
技术标签:
【中文标题】google + api 中缺少 name、given_name 和 family_name json 属性获取用户信息【英文标题】:name, given_name and family_name json property are missing in google + api get user info 【发布时间】:2019-08-31 12:18:01 【问题描述】:我已经创建了 google api services 应用并验证了 user.profile 信息范围是默认添加的。
身份验证、令牌和获取用户信息对我来说工作正常,但是获取用户信息 api 响应中缺少几个字段。
我正在使用下面提到的端点与 google api 进行通信。
身份验证:https://accounts.google.com/o/oauth2/v2/auth 检索令牌:https://accounts.google.com/o/oauth2/token 获取用户信息:https://www.googleapis.com/oauth2/v2/userinfo?access_token=xxxxxxxxxx 和 https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxxxxxxxxxWebRequest request = WebRequest.Create(googleGetUrl + $"&access_token=accesstoken");
request.Credentials = CredentialCache.DefaultCredentials;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream receiveStream = response.GetResponseStream())
using (StreamReader readStream = new StreamReader(receiveStream))
string responseFromServer = readStream.ReadToEnd();
return JsonConvert.DeserializeObject<GoogleUser>(responseFromServer);
我收到如下所述的 json 响应
id: "xxxxxxxxxxxxx",
email: "dummy@email.com",
verified_email: true,
picture: "https://validurl/photo.jpg",
hd: "getting value"
但我想要的是下面提到的 Json
id: "xxxxxxxxxxxxx",
email: "dummy@email.com",
verified_email: true,
picture: "https://validurl/photo.jpg",
hd: "getting value",
name: "some value",
family_name: "some value",
given_name: "some value"
范围配置:
enter image description here
如果我错过了任何配置,请告诉我。您的帮助将不胜感激。
亲切的问候, 莫辛
【问题讨论】:
试试这个 api => https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token 我猜您选择的端点版本根本不支持这些名称字段。我会联系 Google 支持,或者查看这篇类似的文章:***.com/questions/7130648/…。它列出了您可以使用的其他来源。 我也试过googleapis.com/oauth2/v1/…这个。同样的结果没有运气。 @MohsinkhanPathan,这可能对你有帮助 => ***.com/a/22459811/5514820 我已添加范围配置快照。 【参考方案1】:我在身份验证 URL 中缺少范围参数,并且使用以下 URL 对我有用。
返回字符串.Format( "https://accounts.google.com/o/oauth2/auth?client_id=0&redirect_uri=1&response_type=code&scope=2", 客户编号, 回调网址, "https://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/auth/userinfo.email");
亲切的问候, 莫辛帕坦
【讨论】:
【参考方案2】:来自 userinfo 端点的响应不是标准的,所有 oauth 服务器都有自己的实现,它们将返回什么。如果您想获得更多信息,您应该尝试people api。除非您请求电子邮件范围,否则任何人都不应返回电子邮件。我想谷歌几年前就停止返回verified_email了。
GET /v1/people/me HTTP/1.1
Host: people.googleapis.com
Content-length: 0
Authorization: Bearer aJxKQvzgCj5fa86EbB_AYqjt-
【讨论】:
你可以使用filter参数只看到你想要的字段以上是关于google + api 中缺少 name、given_name 和 family_name json 属性获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章
Google Places API 中缺少 Google Maps 中的地点
Google Maps Geocoding API,其 JS api 中缺少的 API 功能(?)
Google Cloud Translation API 请求缺少有效的 API 密钥