如何在ASP.NET身份中获取Google / Facebook的名字/姓氏?

时间:2015-10-23 17:31:24

标签: asp.net asp.net-mvc asp.net-identity google-oauth facebook-oauth

我正在使用ASP.NET MVC和Identity构建应用程序,并且我有Google登录工作,但我想显示用户的名称(来自Google / Facebook),以便而不是网站显示为"您好fred123@gmail.com"它显示为"嗨弗雷德"。我知道如何自定义ApplicationUser,它只是与我不太确定的提供商的互动。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

ExternalLoginCallback方法上,您可以获得所有详细信息。

  //code omitted for clarity
  public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
    {
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo == null)
        {
            return RedirectToAction("Login");
        }

        var identity = AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
        var emailClaim = identity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email);
        var lastNameClaim = identity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Surname);
        var givenNameClaim = identity.Result.Claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName);

        var email = emailClaim.Value;
        var firstName = givenNameClaim.Value;
        var lastname = lastNameClaim.Value;
     }