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

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

我正在使用 ASP.NET MVC 和 Identity 构建一个应用程序并且我有谷歌登录工作,但我想显示用户名(来自谷歌/Facebook),而不是网站显示为“嗨fred123@gmail.com”它显示为“嗨弗雷德”。我知道如何自定义 ApplicationUser,只是我不太确定与提供者的交互。

有人能帮忙吗?

最佳答案

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

关于asp.net - 如何在 ASP.NET Identity 中获取 Google/Facebook 的名字/姓氏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308264/

相关文章:

c# - 单击“编辑命令控件”时 GridView 样式丢失

asp.net-mvc - 不允许使用用于访问路径'/Documents/TestNote/Documents/AddNote'的HTTP动词POST

asp.net-mvc - 如何设置 ASP.NET Identity 以使用我自己的连接字符串?

asp.net-core - 从 razor 组件到 razor 页面的 aspnetcore blazor 导航

asp.net-mvc - 更新身份 1 到 2 后,没有 IUserTokenProvider 已注册错误

javascript - 解析 ASP.Net 通过 cookie 发送的 JavaScript 中的日期

css - 如何将 CSS 应用于特定的 asp.net 表?

javascript - 处理 mailto : 中的双引号

c# - “BeginContext”在应用程序启动时的当前上下文错误中不存在

c# - 在 AppPool 循环后重新连接时,MVC5 卡在 MapSignalR 上