Login Facebook
Continuação do passo-a-passo Login Google
Acesse o endereço
https://developers.facebook.com/apps
Será necessário logar no Facebook e dar permissão de acesso.
Se você ainda não é um Facebook Developer, você precisará se Registrar para ter acesso aos
apps.
Agora, devemos criar um novo App.
Selecione WebSite
Defina o Email e a categoria
Defina a URL
Anote a ID e a chave secreta
No Menu Settings, você pode consultar as informações da app criada. Caso queira, pode
adicionar novas aplicações usando +Add Platform.
No Visual Studio, abra o arquivo App_Start/Startup.Auth.cs
app.SetDefaultSignInAsAuthenticationType(cookieOptions.AuthenticationType); app.UseFacebookAuthentication( appId: "seu_id", appSecret: "sua_chave_secreta"); app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions {
Agora, instale o pacote abaixo usando o NuGet.
Em PublicoController, encontre a Action LoginIntegrado e altere-a
public ActionResult LoginIntegrado(string returnUrl) {// Request a redirect to the external login provider
//return new ChallengeResult("Google",
// Url.Action("ExternalLoginCallback", "Publico", new { ReturnUrl = returnUrl }));
return new ChallengeResult("Facebook",
Url.Action("ExternalLoginCallback", "Publico", new { ReturnUrl = returnUrl })); //return View();
}
Executar a aplicação
Acessar a URL https://localhost:44300/Publico/Secure
Será necessário logar no Facebook e dar permissão de acesso.
Enquanto estiver logado no Facebook, o usuário terá acesso a página Secure.
Ao acessar uma página que necessita de autorização [Autorize], é verificado se há algum usuário
logado através do
UseCookieAuthentication.Caso não tenha um usuário logado, o arquivo Startup e Startup.Auth são executados. Nesse arquivo
pode-se perceber que é chamada a Action LoginIntegrado, que faz a chamada ao Facebook. O
retorno da chamada do Facebook é feito através da Action
ExternalLoginCallback.Adicione o pacote no NuGet
Alterando _Layout.cshtml
Verificar se o usuário está logado no Facebook ou na aplicação.
Abra o arquivo Views/Shared/_Layout.cshtml
Altere o começo do if de autenticação
@{
WebSite1.Models.Cliente cliente = WebSite1.Repositories.Funcoes.GetUsuario(); var identity = User.Identity as
System.Security.Claims.ClaimsIdentity;
//NOME @identity.Name e @identity.IsAuthenticated
if ((cliente != null)|| (identity.IsAuthenticated != null)) {
<div class="navbar-collapse collapse"> <ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("Estados", "Index", "Estados")</li> <li>@Html.ActionLink("Cidades", "Index", "Cidades")</li> <li>@Html.ActionLink("Clientes", "Index", "Clientes")</li> <li>@Html.ActionLink("Automóveis", "Index", "Automovel")</li> <li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li> <li>@Html.ActionLink("Sair", "Logoff", "Publico")</li> </ul> </div> }
else
...
Alterando o Secure.cshtml
Abra o arquivo Views/Publico/Secure.cshtml
Coloque no final do arquivo o trecho abaixo. Isso permitirá ver o nome do usuário logado no
Facebook.
@{
Layout = "~/Views/Shared/_LayoutUser.cshtml"; ViewBag.Title = "Secure Login";
}
<h2>Secure Login</h2> @{
var identity = User.Identity as
System.Security.Claims.ClaimsIdentity; }
Nome: @identity.Name
Em PublicoController, coloque a Action SecureLogoff
public ActionResult SecureLogoff(){
var authentication = HttpContext.GetOwinContext().Authentication; authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return RedirectToAction("Logar", "Publico");
}