我已经创建了Google api服务应用,并确认默认情况下已添加user.profile信息范围。
身份验证,令牌和获取用户信息对我来说工作正常,但是获取用户信息api响应中缺少几个字段。
我正在使用以下提到的端点与Google api通信。
WebRequest 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"
}
范围配置:
如果我错过任何配置,请告诉我。您的帮助将不胜感激。
亲切的问候, 莫辛
答案 0 :(得分:0)
userinfo端点的响应不是标准的,所有oauth服务器都有自己的实现,以实现返回的结果。如果要获取更多信息,请尝试people api。除非您请求电子邮件范围,否则任何人都不应返回电子邮件。我认为Google几年前就停止返回verify_email。
GET /v1/people/me HTTP/1.1
Host: people.googleapis.com
Content-length: 0
Authorization: Bearer aJxKQvzgCj5fa86EbB_AYqjt-
答案 1 :(得分:0)
我在身份验证URL中缺少作用域参数,并且在下面的URL中使用对我有用。
返回string.Format( “ https://accounts.google.com/o/oauth2/auth?client_id= {0}&redirect_uri = {1}&response_type = code&scope = {2}”, 客户编号, CallBackUrl, “ https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email”);
亲切的问候, 莫欣·帕坦