generated from ricardo/MVCLogin
52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
// AccountController.cs
|
|
using Microsoft.AspNetCore.Authentication;
|
|
using Microsoft.AspNetCore.Authentication.Facebook;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Postall.Controllers
|
|
{
|
|
public class OtherLoginsController : Controller
|
|
{
|
|
[HttpGet]
|
|
public IActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
public IActionResult FacebookLogin()
|
|
{
|
|
var properties = new AuthenticationProperties { RedirectUri = Url.Action("FacebookResponse") };
|
|
return Challenge(properties, FacebookDefaults.AuthenticationScheme);
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<IActionResult> FacebookResponse()
|
|
{
|
|
var result = await HttpContext.AuthenticateAsync(FacebookDefaults.AuthenticationScheme);
|
|
|
|
if (!result.Succeeded)
|
|
return RedirectToAction("Login");
|
|
|
|
var claims = result.Principal.Identities.FirstOrDefault()
|
|
.Claims.Select(claim => new
|
|
{
|
|
claim.Issuer,
|
|
claim.OriginalIssuer,
|
|
claim.Type,
|
|
claim.Value
|
|
});
|
|
|
|
// Aqui você pode implementar sua lógica de login
|
|
// Por exemplo, criar ou atualizar o usuário no banco de dados
|
|
|
|
return RedirectToAction("Index", "Home");
|
|
}
|
|
|
|
[HttpPost]
|
|
public IActionResult Logout()
|
|
{
|
|
return SignOut("Cookies", FacebookDefaults.AuthenticationScheme);
|
|
}
|
|
}
|
|
} |