Asp.net外部登录(google)获取所有用户详细信息

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

我正在Asp.Net网站中尝试外部登录(Oauth+Owin)。我能够检索数据,如名字,姓氏,电子邮件,性别等谷歌用户在登录。但我无法检索用户的国家/地区、电话号码

代码: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;
                }
我可以获得电子邮件,名字,姓氏,性别。但是电话号码是空的,因为它没有被返回。 有没有办法从谷歌检索电话号码、州、国家等数据


提前感谢

如果用户未输入电话号码或未添加国家/地区,则无法返回此数据,因为谷歌没有此数据

如果你用它来测试它。具有所有不同的作用域

了解你的基本情况 你圈子里的人的信息和名单

知道你在谷歌上是谁吗 查看您的电子邮件地址 基本视图 有关您帐户的信息


如果用户未将相关信息设置为公共,则您也将无法看到该信息。即使您正在检查经过身份验证的用户的数据,这也是正确的,如果它不是公共的,您无法从API中看到它。

您需要请求其他作用域:。我不确定,但我认为没有这方面的信息。