Подтвердить что ты не робот

Как получить FirstName + LastName из учетной записи пользователя google, прошедшей проверку подлинности с использованием Asp.Identity в приложении MVC5

Я создал приложение MVC 5, и я могу выполнить аутентификацию пользователя с помощью внешнего входа Google, который является функцией "из коробки". Я заметил, что, аутентифицируя пользователя с помощью учетной записи google, UserName и Email хранятся в базе данных с одинаковым значением (т.е. Электронной почтой для них обоих). Как я могу восстановить FirstName, LastName из зарегистрированной учетной записи google.

4b9b3361

Ответ 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;
        }

     }

Надеюсь, что это поможет.