Continuação do passo-a-passo Login Google Login Facebook 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 um nome para o App ID
Defina o Email e a categoria Defina a URL Vá até o Developer Dashboard
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 ClientId = "seu_id.apps.googleusercontent.com", ClientSecret = "sua_chave_secreta" );
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)) else... <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> 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 Autenticado: @identity.isauthenticated @Html.ActionLink("Sair", "SecureLogoff")
Em PublicoController, coloque a Action SecureLogoff public ActionResult SecureLogoff() var authentication = HttpContext.GetOwinContext().Authentication; authentication.signout(defaultauthenticationtypes.applicationcookie); return RedirectToAction("Logar", "Publico"); Execute a aplicação.