从 MVC 中的 Google OAuth API 检索出生日期

本文关键字:API 检索 出生日期 OAuth Google MVC 中的 | 更新日期: 2023-09-27 18:37:04

我添加了以下范围来访问用户的数据

#region Google
 var googleAuthenticationOptions = new GoogleOAuth2AuthenticationOptions()
        {
            ClientId = ConfigurationManager.AppSettings["Google_AppID"],
            ClientSecret = ConfigurationManager.AppSettings["Google_AppSecret"]
        };
        googleAuthenticationOptions.Scope.Add("profile");
        googleAuthenticationOptions.Scope.Add("email");
googleAuthenticationOptions.Provider = new GoogleOAuth2AuthenticationProvider()
        {
            OnAuthenticated = async context =>
            {
                //context.Identity.AddClaim(new Claim("birthday", context.User.GetValue("birthday").ToString()));
                string claimType;
                bool bAddClaim = false;
                foreach (var claim in context.User)
                {
                    claimType = string.Empty;
                    bAddClaim = false;
                    switch (claim.Key)
                    {
                        case "given_name":
                            claimType = "FirstName";
                            bAddClaim = true;
                            break;
                        case "family_name":
                            claimType = "LastName";
                            bAddClaim = true;
                            break;
                        case "gender":
                            claimType = "gender";
                            bAddClaim = true;
                            break;
                    }
                    if (bAddClaim)
                    {
                        string claimValue = claim.Value.ToString();
                        if (!context.Identity.HasClaim(claimType, claimValue))
                            context.Identity.AddClaim(new System.Security.Claims.Claim(claimType, claimValue, "XmlSchemaString", "Google"));
                    }
                }
            }
        };

context.user in side foreach 循环中通过放置断点进行调试时我正在获得以下信息

{"子": "101111724115925537597","名称": "阿洛克纳特","given_name": "阿洛克","family_name": "纳特","配置文件": "https://plus.google.com/101111724115925537597","图片":"https://lh3.googleusercontent.com/XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/         照片.jpg","电子邮件": "aloknathbabuji786@gmail.com","email_verified":对,"性别": "男性","区域设置": "en"}

因此,即使在添加"配置文件"范围后,我也不会将生日作为返回值的一部分。我已确保个人资料将生日可见性设置为公开,即所有人都可见。我需要执行任何特定范围或特定设置才能从Google检索生日?

或者有什么方法可以解决此问题,请发布解决方案

从 MVC 中的 Google OAuth API 检索出生日期

我认为您需要将范围设置为 https://www.googleapis.com/auth/plus.login 才能获得此堆栈溢出用户建议的出生日期:

使用谷歌OAuth API检索出生日期和婚姻状况

更多信息也可以在这里找到:https://developers.google.com/+/api/oauth#plus.login