Fala galera! Tudo tranquilo?
Hoje vou falar mais um pouco sobre NodeJs, só que agora é sobre autenticação com serviços externos. No post vou mostrar como vincular a sua aplicação com o facebook, mas também podemos conectar com contas Microsoft, Google, Twitter, dentre outras.
Para começar, temos que fazer uma conta de desenvolvedor no facebook, e posteriormente a aplicação que vai ser vinculada à nossa, que pode ser feita através do link a seguir: https://developers.facebook.com/apps; não vou mostrar como fazer isso neste post, porque eu mostro como fazer passo a passo neste post AQUI.
Com a aplicação feita, vamos para o código! Para fazer a autenticação utilizaremos um pacote chamado “passport“, que tem a finalidade de autenticar as solicitações em conjunto com plugins, chamados de “Estratégias”. O passaport trabalha apenas para autenticar, não tem nenhum esquema de banco de dados específico para fazer isso, o que maximiza a flexibilidade.
Em conjunto com ele também vamos usar o “passport-facebook” que é uma das “Estratégias” disponíveis para utilizarmos, ele trabalha com OAuth 2.0 e é ele que faz a conecção com o Facebook.
Você pode instalar os pacotes mencionados com os comandos:
npm install passport npm install passport-facebook
A configuração do passport é bastante flexível; para conectar com serviços externos, nós precisamos armazenar as credenciais em algum lugar para utiliza-las posteriormente, para isso ele disponibiliza os métodos “serializeUser” e “deserializeUser” onde podemos buscar essas informações onde quisermos, depois disso colocamos as credenciais da aplicação, e as configurações estão prontas, veja:
Com isso já configurado, só falta ajustarmos as nossas rotas, para logar e deslogar, também coloquei uma para mostrar o perfil do usuário, como vocês podem ver a seguir:
E por fim, vou mostrar-lhes o método que verifica se o usuário está logado, bastante simples:
Tranquilão né?! Com isso já estamos fazendo autenticação de usuários com o facebook! 😀
Só pra acrescentar, estou usando ejs para renderizar minhas páginas e bootstrap pra deixar agradável.
Os exemplos de código estão disponíveis no GitHub: https://github.com/vmussak/nodejsFacebookAuth
Também deixei um exemplo funcionando online pra vocês, está disponível aqui: http://nodejsfbautenticacao.azurewebsites.net/
Por hoje é só, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀
Referências:
https://www.npmjs.com/package/passport
https://github.com/jaredhanson/passport-facebook