Я пытаюсь использовать внешний вход (Oauth + Owin) на сайте Asp.Net. Я могу получить данные, такие как имя, фамилия, адрес электронной почты, пол и т. Д. Пользователя Google во время ввода. Но я не могу получить страну пользователя, номер телефона.Asp.net External Login (google) получает все данные пользователя
Код: Startup.Auth.cs Это добавляет все претензии
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;
}
Я в состоянии получить электронную почту, Firstname, фамилия, пол. Но номер телефона равен null, поскольку он не возвращается. Есть ли способ получить данные, такие как номер телефона, состояние, страну из Google?
Заранее спасибо
Вам нужно будет запросить дополнительные области: https://developers.google.com/+/web/api/rest/oauth#login-scopes. Я не уверен, но я не думаю, что информация доступна. –