如何从MVC5应用程序中使用Asp.Identity进行身份验证的用户的Google帐户获取FirstName + LastName

use*_*973 15 asp.net-mvc asp.net-identity

我创建了一个MVC 5应用程序,并且我能够使用Google外部登录验证用户,这是一个开箱即用的功能.我观察到,通过使用谷歌帐户验证用户,用户名和电子邮件存储在具有相同值的数据库中(即,两者都有电子邮件).如何从注册的Google帐户中检索FirstName,LastName.

DSR*_*DSR 21

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

    [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;
        }

     }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 我认为值得一提的是这个方法位于Controllers\AccountController.cs中 (3认同)