Já tentei baixar novamente o projeto para ver se não foi algo que eu escrevi errado, mas mesmo assim ele está retornando null.
web.config:
<add key="google:client_id" value="1075119104044-umddpnk728f6hli2kopnubn304orlad8.apps.googleusercontent.com" />
<add key="google:client_secret" value="EgBSKjBwiXTn5pw4fmZSHgxR" />
Startup
builder.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
builder.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["google:client_id"],
ClientSecret = ConfigurationManager.AppSettings["google:client_secret"],
Caption = "Google"
});
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 View("Error");
}
View:
@using (Html.BeginForm("RegistrarPorAutenticacaoExterna", "Conta"))
{
var providersAutenticacao = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
if (providersAutenticacao != null && providersAutenticacao.Any())
{
foreach (var provider in providersAutenticacao)
{
<button class="btn" type="submit" value="@provider.AuthenticationType" name="provider">
@provider.Caption
</button>
}
}
}