Asp.net外部登录(google)获取所有用户详细信息
我正在Asp.Net网站中尝试外部登录(Oauth+Owin)。我能够检索数据,如名字,姓氏,电子邮件,性别等谷歌用户在登录。但我无法检索用户的国家/地区、电话号码 代码:Startup.Auth.cs 这就增加了所有的索赔Asp.net外部登录(google)获取所有用户详细信息,asp.net,asp.net-mvc,login,oauth,google-plus,Asp.net,Asp.net Mvc,Login,Oauth,Google Plus,我正在Asp.Net网站中尝试外部登录(Oauth+Owin)。我能够检索数据,如名字,姓氏,电子邮件,性别等谷歌用户在登录。但我无法检索用户的国家/地区、电话号码 代码:Startup.Auth.cs 这就增加了所有的索赔 var googleOptions = new GoogleOAuth2AuthenticationOptions() { ClientId = "************com", Clien
var googleOptions = new GoogleOAuth2AuthenticationOptions()
{
ClientId = "************com",
ClientSecret = "***********",
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = (context) =>
{
foreach (var claim in context.User)
{
var claimType = string.Format("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/{0}", claim.Key);
string claimValue = claim.Value.ToString();
context.Identity.AddClaim(new Claim(claimType, claimValue, "http://www.w3.org/2001/XMLSchema#string"));
}
return Task.FromResult(0);
}
}
};
app.UseGoogleAuthentication(googleOptions);
AccountsController:
if (loginInfo.Login.LoginProvider == "Google")
{
var externalIdentity = AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var emailClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email);
var lastNameClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Surname);
var givenNameClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName);
var addressClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.StreetAddress);
var countryClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Country);
var stateClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.StateOrProvince);
var postalClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.PostalCode);
var phoneClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.MobilePhone);
var genderClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Gender);
var email = emailClaim.Value;
var firstName = givenNameClaim.Value;
var lastname = lastNameClaim.Value;
var gender = genderClaim.Value;
//var phone = phoneClaim.Value;
}
我可以获得电子邮件,名字,姓氏,性别。但是电话号码是空的,因为它没有被返回。
有没有办法从谷歌检索电话号码、州、国家等数据
提前感谢如果用户未输入电话号码或未添加国家/地区,则无法返回此数据,因为谷歌没有此数据 如果你用它来测试它。具有所有不同的作用域 了解你的基本情况 你圈子里的人的信息和名单 知道你在谷歌上是谁吗 查看您的电子邮件地址 基本视图 有关您帐户的信息
如果用户未将相关信息设置为公共,则您也将无法看到该信息。即使您正在检查经过身份验证的用户的数据,这也是正确的,如果它不是公共的,您无法从API中看到它。您需要请求其他作用域:。我不确定,但我认为没有这方面的信息。