当前位置: 首页 > 知识库问答 >
问题:

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

戚令秋
2023-03-14

我添加了以下作用域来访问来自用户的数据

#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"));
                    }
                }
            }
        };

在上下文调试时。用户在foreach循环中,通过设置断点,我得到了以下信息:

{
"sub": "101111724115925537597",
"name": "Alok Nath",
"given_name": "Alok",
"family_name": "Nath",
"profile": "https://plus.google.com/101111724115925537597",
"picture":"https://lh3.googleusercontent.com/XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/
          photo.jpg",
"email": "aloknathbabuji786@gmail.com",
"email_verified": true,
"gender": "male",
"locale": "en"
}

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

或者有什么办法解决这个问题请贴出解决方案

共有1个答案

越高峻
2023-03-14

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

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

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

 类似资料:
  • 问题:我在从API调用中获取用户的生日方面遇到困难,我是OAuth的新手。 < b >遵循的步骤:(遵循了使用google登录所需的所有步骤)< br> 1 .创建了一个应用程序。< br> 2。已获得app_id和secret_key。< br> 3。没有利用SDK,在php中实现了没有SDK的过程。< br> 4。通过调用< CODE > accounts[dot]Google[dot]com

  • 我正在我的一个应用程序中使用谷歌登录。我找不到检索出生日期和性别的方法。有人能帮忙吗?这是我使用swift的代码

  • 无法将应用程序推送到IBM云,原因是错误404表示暂存应用程序和跟踪日志...从日志缓存检索日志失败:意外状态代码404

  • 问题内容: 这个问题已经在这里有了答案 : 在MySQL中获取一个人的年龄 (2个答案) 6年前关闭。 我在mysql中有一个表,它的出生日期列保存为unix时间戳(bigint)。 我想这样写查询: 和 3点是从出生日期算起年龄的函数。 我知道该函数,但是如果将出生日期另存为unix时间戳,那就不好了。 我能做些什么? 谢谢 问题答案: 从MySQL的日期和时间函数,我们可以结合,和。 假设这是

  • 问题内容: 我有一个具有以下结构的模型 保存时其他一切都很好。它将另存为Firebase Realtime数据库 但是当我尝试检索它时,日期给出了以下错误- 我知道Firebase不支持Java Date对象,但是由于它将它们保存在地图中,如何从该地图中获取日期?在Firebase Android中,是否有任何适当的保存和检索日期的方法? 问题答案: 您可以将日期存储为纪元日期。您可以花很长的时间

  • 问题内容: 我检索两个日期之间的数据,当我选择带有月份的日期时,它如何获得正确的结果,以及如何输出空列表视图,但是当我选择一个月以上的日期时,下面的输出空列表视图是我的代码 在这里我在DB类中声明变量 创建表语句 输入数据方法 在这里我访问ExEntry方法 在这里,我面临着这两个日期变量之间的问题 我像下面这样访问 问题答案: 有两种主要解决方案。所有解决方案的共同点是,必须以某种方式对包含日期