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

Tim*_*ond 4 asp.net asp.net-mvc facebook-oauth google-oauth asp.net-identity

我正在使用 ASP.NET MVC 和 Identity 构建一个应用程序,并且我可以使用 Google 登录,但我想显示用户名(来自 Google/Facebook),这样网站就不会显示为“Hi fred123@gmail” .com”,它显示为“Hi Fred”。我知道如何自定义 ApplicationUser,这只是与我不太确定的提供者的交互。

有人可以帮忙吗?

Kis*_*man 5

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;
     }
Run Code Online (Sandbox Code Playgroud)