Laravel

Autenticação em redes sociais com Laravel

Por em

Neste post, vamos configurar o Laravel para que ele consiga fazer o processo de autenticação utilizando as redes sociais, nesse nosso caso o Github.

Preparando o ambiente para desenvolvimento

Depois da instalação do Laravel, em nosso caso, no momento da escrita deste post, o Laravel 5.1. Entramos no arquivo composer.json, e inserimos o pacote Socialite, indicada pela própria documentação do laravel. Veja abaixo:

Com o terminal aberto na raiz de nosso projeto, digite:

Configurações Iniciais

Após nosso projeto estar atualizado, e o pacote Socialite instalado, vamos entrar na view welcome.blade.php, caminho: resources/views/welcome.blade.php;
e vamos fazer uma alteração simples, criando apenas um link, veja:

Agora vamos criar um controller para chamar nossa view. No terminal digite:

Com o comando acima, será criado um controller chamado SocialoginController, na pasta Socialogin, sem os métodos pré configurados. Caminho completo do arquivo criado: app/Http/Controllers/Socialogin/SocialoginController.php

Entrando no Controller criado, vamos criar um construtor, para chamar uma Factory que será responsável por construir a view, ao darmos um “use” nesta Factory, vamos apelidá-la de ViewFactory, veja abaixo:

O próximo passo é criar um método chamado index, para chamar a view welcome, veja:

Para vermos se está tudo correto, vamos criar uma rota, que será encarregada de chamar o controller e apresentar as view. Entre no arquivo de rotas, caminho: app/Http/routes.php, vamos apagar a rota existente, e criar uma nova rota, veja:

Para testarmos, vamos entrar no terminal, digitar o comando abaixo, e rodar o servidor:

No navegador vamos acessar a url: http://localhost:8000/

Veja o resultado:

Navegador

Configurando o Socialite

Para configurar o Socialite em nosso projeto, temos que registrá-lo, entre no arquivo app.php, caminho: config/app.php e vamos registrar, veja abaixo:

Nesse mesmo arquivo, vamos adicionar uma facade, veja:

A configuração no arquivo app.php está pronta, vamos entrar no arquivo services.php para finalizarmos as configurações. Entre no arquivo, caminho: config/services.php e adicione o conteúdo abaixo:

Abra o arquivo .env localizado na raiz do projeto e digite o conteúdo abaixo, porém com as credenciais da API criada no GitHub.

Não mostrarei como criar uma aplicação no GitHub, porém colocarei os passos para isso, veja:

1º Entre no seu GitHub
2º Vá em Settings
3º Vá em Applications
4º Developer applications
5º Register new Application
6º Coloque o nome da aplicação, a url responsável, um descrição, e a url de redirecionamento, em nosso caso “http://localhost:8000/github/callback”
7º Registre a aplicação, e após será redirecionado para a página principal da aplicação onde será fácil encontrar as credenciais citada acima: que estará como Client ID e Client Secret.

Configurando o Controller e Rotas

Após a configuração do Socialite, vamos configurar o controller; entre no controler SocialoginController criado acima, e vamos chamar uma Factory do Socialite no construtor, e também criaremos um método chamado redirectToProvider para fazer o redirecionamento para a página do GitHub, para o usuário fazer a autorização.

Veja abaixo:

Para finalizar com o controller, vamos criar um método chamado handleProviderCallback, que em, nosso caso será responsável por retornar todos os dados do usuário, veja abaixo:

Pronto controller finalizado.

Agora temos que criar as rotas. Uma responsável, por chamar o método redirectToProvider do controller, para sermos redirecionado para o GitHub, e outra rota para receber os dados do usuário, que no caso, é a mesma roda configurada na criação da API como sendo a rota autorizada para receber os dados. Veja abaixo:

Finalizando

Para finalizar a aplicação, vamos colocar o caminho da rota em nosso link, na view welcome.blade.php, veja:

Veja:

Navegador

Acessando autorização

Conclusão

Com o pacote Socialite, com as mesmas configurações descritas acima, também é possível fazer a mesma autorização com as APIs do Facebook, Google+, Twitter, Linkedin e Bitbucket…
Grande parte das configurações deste post, foram tiradas da documentação do Laravel 5,1.

  • Euller Cristian Duarte Rodrigues

    Prezados, há uma segunda parte deste artigo? Pois não foi possivel visualizar a integração funcionando. Será mostrado em uma segunda parte?

    Atenciosamente
    Euller Cristian

  • Felipe Mathais

    Gostaria muito de saber como salvar as informações do usuário github. Devo salvar na mesma table de users ou devo criar uma table apenas para autenticação via github. E como eu mantenho esse usuário logado?

    Att. Felipe Mathais

  • Candido

    Olá Felipe Mathais! Tbm?
    Primeiramente gostaria de pedir desculpas pela demora em responder!
    Você pode fazer de ambas as formas, e em relação ao manter o usuário logado, o usuário só sairá do sistema, quando ele fizer o logout, enquanto isso não acontecer, ele continuará logado!
    Grande Abraço!!!