我正在使用 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/