如何在 MVC5 应用程序中使用 Asp.Identity 从用户的 google 帐户中获取 FirstName + LastName
How to get FirstName + LastName from the user's google account authenticated using Asp.Identity in MVC5 application
我已经创建了一个 MVC 5 应用程序,我可以使用 Google 外部登录来验证用户,这是一个开箱即用的功能。我观察到,通过使用 google 帐户对用户进行身份验证,用户名和电子邮件以相同的值存储在数据库中(即,它们都是电子邮件)。我如何从注册的 google 帐户中检索名字、姓氏。
您可以在 AccountController 的 ExternalLoginCallback
方法中获取它(因为您使用的是开箱即用的项目模板),如下所述。
[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;
}
}
希望对您有所帮助。
我已经创建了一个 MVC 5 应用程序,我可以使用 Google 外部登录来验证用户,这是一个开箱即用的功能。我观察到,通过使用 google 帐户对用户进行身份验证,用户名和电子邮件以相同的值存储在数据库中(即,它们都是电子邮件)。我如何从注册的 google 帐户中检索名字、姓氏。
您可以在 AccountController 的 ExternalLoginCallback
方法中获取它(因为您使用的是开箱即用的项目模板),如下所述。
[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;
}
}
希望对您有所帮助。