Ao fazer a autenticação pelo google não é retornado os dados do usuario no callback.
ContaController
[HttpPost]
public ActionResult RegistrarPorAutenticacaoExterna(string provider)
{
SignInManager.AuthenticationManager.Challenge(new AuthenticationProperties
{
RedirectUri = Url.Action("RegistrarPorAutenticacaoExternaCallback")
}, provider);
return new HttpUnauthorizedResult();
}
public async Task<ActionResult> RegistrarPorAutenticacaoExternaCallback()
{
var loginInfo = await SignInManager.AuthenticationManager.GetExternalLoginInfoAsync();
var usuarioExistente = await UserManager.FindByEmailAsync(loginInfo.Email);
if (usuarioExistente != null)
return View("Error");
var novoUsuario = new UsuarioAplicacao();
novoUsuario.Email = loginInfo.Email;
novoUsuario.UserName = loginInfo.Email;
novoUsuario.NomeCompleto = loginInfo.ExternalIdentity.FindFirstValue(loginInfo.ExternalIdentity.NameClaimType);
var resultado = await UserManager.CreateAsync(novoUsuario);
if (resultado.Succeeded)
{
var resultadoAddLoginInfo = await UserManager.AddLoginAsync(novoUsuario.Id, loginInfo.Login);
if (resultadoAddLoginInfo.Succeeded)
return RedirectToAction("Index", "Home");
}
return RedirectToAction("Error");
}
Startup
builder.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
builder.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["google:cliente_id"],
ClientSecret = ConfigurationManager.AppSettings["google:client_secret"],
Caption = "Google"
});