DEV Community

Cover image for Login com rede social usando Laravel Socialite
Tadeu Barbosa
Tadeu Barbosa

Posted on

Login com rede social usando Laravel Socialite

Você já precisou ou pelo menos pensou em como seria implementar um sistema de login via rede social no seu sistema? Sim?! Então leia este post!


Estou aqui, sentado em frente a um computador, num domingo a tarde. Tive vontade de escrever sobre o Laravel Socialite depois de o ter conhecido essa semana.

Algo muito comum e que, pessoalmente, acho sensacional, é entrar num site e ao invés de se ter somente um formulário de trocentos campos, ter ali ao lado os botões de login via rede social.

Alt Text

Há uns anos já precisei me aventurar a criar esses botões, depois fiquei muito tempo sem precisar realmente implementar sistemas como esses, porque não se encaixavam no negócio dos clientes que tive. Até que essa semana foi colocado diante de mim a tarefa de implementar este login via redes sociais num sistema em Laravel já em andamento. Fui ai que conheci o Laravel Socialite.

Me lembro de quando fiz essa tarefa da última vez, precisa configurar todas os detalhes da rede social que fosse utilizar. Era um tanto quanto trabalhoso!

Bem, o Laravel Socialite não é um projeto novo. Pelo que vi já está na ativa a quatro anos ou mais. Porém eu não o conhecia, como disse anteriormente, não precisei fazer esse tipo de coisa durante muito tempo.


Pelo próprio site do laravel você vai encontrar o manual de instalação. Seguindo o que está escrito, você vai precisar rodar o comando:

composer require laravel/socialite
Enter fullscreen mode Exit fullscreen mode

Você poderá conectar o seu site a diferentes redes sociais, por exemplo: github, google, facebook, twitter e um monte de outras. Vamos configurar o facebook nesse exemplo.

Vamos primeiramente registrar o nosso app de exemplo lá no facebook developers.

Alt Text

Clique em Create App, botão verde no canto superior direito.

Alt Text

Escolha Build connected experiences, clique em Continue e preencha os seus dados na próxima tela. Pra finalizar clique em Create App. Adicione um Facebook login nos produtos. Configure para aplicativo para web, defina sua url e Next.

Você vai precisar de duas informações para configurar o seu app: App ID e App Secret. Você vai adicionar as seguintes informações em app/services.php:

'github' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => 'login/facebook/callback',
],
Enter fullscreen mode Exit fullscreen mode

Aqueles informações que recuperamos lá no facebook, vamos colocar no .env agora. Veja que estamos usando duas informações ali no services.php: FACEBOOK_CLIENT_ID, FACEBOOK_CLIENT_SECRET.

Crie as seguintes rotas em: routes/web.php:

Route::get('login/facebook', 'LoginController@redirectToProvider');
Route::get('login/facebook/callback', 'LoginController@handleProviderCallback');
Enter fullscreen mode Exit fullscreen mode

No LoginController.php, adicione os dois métodos:

public function redirectToProvider()
{
  return Socialite::driver('facebook')->redirect();
}

public function handleProviderCallback()
{
  $userData = Socialite::driver('facebook')->user();
  // $user = new User();
  // $user->email = $userData->getEmail();
  // $user->name = $userData->getName();
  // $user->provider_id = $userData->getId();
}
Enter fullscreen mode Exit fullscreen mode

Bem, daqui pra frente você pode utilizar segundo suas necessidades! Você ainda pode utilizar em apis ;)


É isso! Espero que de alguma forma possa te ajudar como me ajudou. Até a próxima!

Top comments (0)