1

Я создаю приложение с использованием ASP.NET MVC и Identity, и у меня работают логины Google, но я бы хотел показать имя пользователя (из Google/Facebook), чтобы вместо веб-сайта отображалось как «Привет fred123 @ gmail.com "отображается как" Привет Фред ". Я знаю, как настроить ApplicationUser, это просто взаимодействие с провайдерами, о которых я не слишком уверен.Как получить имя/фамилию Google/Facebook в ASP.NET Identity?

Может ли кто-нибудь помочь?

ответ

2

На основе метода 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; 
    } 
+1

очень прост в применении, спасибо –