The Blog

Laravel: Criando a autenticação de usuários com Facebook – Reiniciando


A autenticação de usuários será realizada com o Socialite buscando as informações no Facebook. Vamos instalar as dependências do Socialite com o comando abaixo:

composer require laravel/socialite

Adicione as seguines linhas no arquivo ‘config/services.php’:

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('APP_URL') . '/login/facebook/callback',
],

Para criar uma nova aplicação para efetuar login com o Facebook, basta acessar o link e preencher os campos:

Nome da aplicação: Reiniciando – Financeiro
URL do site: https://reiniciando.maksoud.dev/

Agora você já tem o ‘ID do Aplicativo’ e a ‘Chave Secreta do Aplicativo’. É necessário que você preencha os campos ‘Domínios do Aplicativo’, ‘URL da Política de Privacidade’ e ‘URL dos Termos de Serviço’, escolha a categoria e marque a opção ‘Apoiar minha própria empresa’.

Em configurações, você vai encontrar os seguintes campos:

URL de redirecionamento para verificar / Valid OAuth Redirect URIs: https://reiniciando.maksoud.dev/public/login/facebook/callback

Dentro do arquivo ‘.env’ adicione as duas chaves e atualize o campo com a URL do aplicativo, conforme exemplo abaixo:

APP_URL=https://reiniciando.maksoud.dev/public (Atualizar essa linha)

FACEBOOK_CLIENT_ID=[insira_o_client_ID]
FACEBOOK_CLIENT_SECRET=[insira_o_client_secret]

Vamos criar o Controller através do comando Artisan:

php artisan make:controller SocialiteController

Dentro do arquivo recém criado em ‘app/Http/Controllers/SocialiteController.php’ adicione as seguintes linhas:

use Laravel\Socialite\Facades\Socialite;

class SocialiteController extends Controller
{
     /**
     * Redirect the user to the Facebook authentication page.
     *
     * @return \Illuminate\Http\Response
     */
    public function redirectToProvider()
    {
        return Socialite::driver('facebook')->redirect();
    }

    /**
     * Obtain the user information from Facebook.
     *
     * @return \Illuminate\Http\Response
     */
    public function handleProviderCallback()
    {
        $user = Socialite::driver('facebook')->user();

        if ($name = $user->getName()) {
	        echo "Nome: {$name} <br>";
        }//if ($name = $user->getName())
        
        if ($nickname = $user->getNickname()) {
	        echo "Apelido: {$nickname} <br>";
        }//if ($nickname = $user->getNickname())
        
        
        if ($email = $user->getEmail()) {
	        echo "E-mail: {$email} <br>";
        }
        
        if ($avatar = $user->getAvatar()) {
	        echo "<img src='{$avatar}' alt='Avatar' style='border-radius:50%;max-width:200px;'> <br>";
        }

        // $user->token;
    }
}

Agora adicione as rotas em ‘routes/web.php’:

Route::get('login/facebook', 'SocialiteController@redirectToProvider');
Route::get('login/facebook/callback', 'SocialiteController@handleProviderCallback');

Quando chamada a URL https://reiniciando.maksoud.dev/public/login/facebook no navegador o retorno deverá ser algo semelhante a imagem abaixo:

Esse projeto possui todo o código disponível em https://github.com/Maksoud/reiniciando e o projeto está hospedado em https://reiniciando.maksoud.dev/. Deixe seu comentário abaixo e colabore com esse projeto.

Leave a comment