Я создал приложение MVC 5, и я могу выполнить аутентификацию пользователя с помощью внешнего входа Google, который является функцией "из коробки". Я заметил, что, аутентифицируя пользователя с помощью учетной записи google, UserName и Email хранятся в базе данных с одинаковым значением (т.е. Электронной почтой для них обоих). Как я могу восстановить FirstName, LastName из зарегистрированной учетной записи google.
Как получить FirstName + LastName из учетной записи пользователя google, прошедшей проверку подлинности с использованием Asp.Identity в приложении MVC5
Ответ 1
Вы можете получить это внутри метода ExternalLoginCallback
в AccountController (как вы используете шаблон проекта без коробки), как описано ниже.
[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;
}
}
Надеюсь, что это поможет.