【问题标题】:How to get FirstName + LastName from the user's google account authenticated using Asp.Identity in MVC5 application如何从使用 MVC5 应用程序中的 Asp.Identity 进行身份验证的用户的谷歌帐户中获取 FirstName + LastName
【发布时间】:2017-09-06 21:07:29
【问题描述】:

我已经创建了一个 MVC 5 应用程序,并且我能够使用 Google 外部登录来验证用户身份,这是一个开箱即用的功能。我观察到,通过使用 google 帐户对用户进行身份验证,UserName 和 Email 以相同的值存储在数据库中(即,它们都使用 Email)。我如何从注册的 google 帐户中检索 FirstName、LastName。

【问题讨论】:

    标签: asp.net-mvc asp.net-identity


    【解决方案1】:

    您可以在 AccountController 中的 ExternalLoginCallback 方法中获取此信息(因为您使用的是开箱即​​用的项目模板),如下所述。

        [AllowAnonymous]
        public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
            if (loginInfo == null)
            {
                return RedirectToAction("Login");
            }
    
            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 email = emailClaim.Value;
                    var firstName = givenNameClaim.Value;
                    var lastname = lastNameClaim.Value;
            }
    
         }
    

    希望这会有所帮助。

    【讨论】:

    • 我觉得值得一提的是这个方法位于Controllers\AccountController.cs
    • @DSR 非常感谢,很容易集成
    • 我通过搜索而不是使用 MVC 到达这里,而是使用 Microsoft Asp.Net Forms Identity Example Site .. 代码在“RegisterExternalLogin.aspx.cs”中 将上述代码中的集合引用替换为 var externalIdentity = Context .GetOwinContext().Authentication.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);访问集合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多