✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Sistema de login social usando Laravel Socialite

94

Crédito: Este artigo é inspirado neste post Laravel Social Authentication with Socialite

Você está procurando implementar um sistema de login social em seu site Laravel? Ao permitir o login social, seus usuários não precisam se registrar no seu site. Isso também nos poupa muito trabalho, como enviar link de ativação e verificar conta de e-mail. Neste artigo, estudamos como adicionar um sistema de login social usando a socialite Laravel.

A biblioteca Laravel Socialite fornece autenticação OAuth com Facebook, Twitter, Google, LinkedIn, GitHub e Bitbucket. O que precisamos fazer é instalar esta biblioteca em nosso site Laravel, configurá-la, obter as chaves API de um site social e pronto.

Sistema de login social usando Laravel Socialite

Criar tabela de usuários

Para implementar o sistema de login social, precisamos criar uma tabela de usuários que irá armazenar os detalhes fornecidos pelo site social.

Se você tiver uma nova instalação de um Laravel, abra a ferramenta de linha de comando no diretório raiz de um projeto e execute o comando php artisan make:auth. Este comando criará controladores de autenticação como LoginController, RegisterController, etc., que estão localizados no diretório app / Http / Controllers / Auth. Ele também cria visualizações login.blade.php, register.blade.php no diretório resources / view / auth.

Em seguida, abra a tabela de migração para usuários. Modificaremos esta migração padrão e adicionaremos mais duas colunas chamadas provedor e provedor_id.

public function up() {     Schema::create('users', function (Blueprint $table) {         $table->increments('id');         $table->string('name');         $table->string('email')->nullable();         $table->string('password')->nullable();         $table->string('provider');         $table->string('provider_id');         $table->rememberToken();         $table->timestamps();     }); }

Como você pode ver, definimos as colunas de e-mail e senha como anuláveis. Por quê? Quando usamos a autenticação de login social, não há garantia de obter uma id de e-mail de um usuário. E a senha também não é necessária nesse caso. Portanto, mantemos o e-mail e a senha anuláveis. O provedor de coluna armazenará o nome do site social, como facebook, twitter, etc. A coluna provider_id armazenará o id social de um usuário respectivo ao site social.

Depois de modificar a migração do usuário conforme descrito acima, execute o comando php artisan migrate. Isso criará uma tabela chamada ‘usuários’ em seu banco de dados.

Provavelmente, ao executar o comando de migração, você obterá algum erro estranho relacionado ao comprimento do caractere. Em caso afirmativo, abra o arquivo AppServiceProvider.php do diretório app / Providers. Neste arquivo, precisamos definir o comprimento da string padrão para as colunas da tabela do banco de dados.

Arquivo AppServiceProvider.php

<?php   namespace AppProviders;   use IlluminateSupportServiceProvider; use IlluminateSupportFacadesSchema;   class AppServiceProvider extends ServiceProvider {     /**      * Bootstrap any application services.      *      * @return void      */     public function boot()     {         Schema::defaultStringLength(255);     }       /**      * Register any application services.      *      * @return void      */     public function register()     {         //     } }

Modelo de Usuário

Por padrão, o Laravel inclui um modelo do AppUser Eloquent no diretório do seu aplicativo. Abra o User.php na pasta do aplicativo. Adicione mais duas colunas provedor, provider_id à variável $ fillable.

protected $fillable = [     'name', 'email', 'password', 'provider', 'provider_id', ];

Instalar e configurar o Laravel Socialite

Para instalar esta biblioteca, você deve ter o composer instalado em seu sistema.

Em sua ferramenta de linha de comando, execute o comando abaixo.

composer require laravel/socialite

Após instalar a biblioteca, registre LaravelSocialiteSocialiteServiceProvider em seu arquivo de configuração config / app.php.

'providers' => [     // Other service providers...       LaravelSocialiteSocialiteServiceProvider::class, ],

No mesmo arquivo config / app.php, na matriz aliases, adicione Socialite facade.

'Socialite' => LaravelSocialiteFacadesSocialite::class,

Agora é hora de registrar seu aplicativo no site social. Por exemplo, presumimos que você deseja implementar a autenticação de login do Facebook. Então vá em frente e crie um aplicativo no Facebook.

Assim que estiver pronto com o id do aplicativo, o segredo do aplicativo do Facebook, abra o arquivo config / services.php e adicione o código abaixo a ele.

'facebook' => [     'client_id' => env('FB_APP_ID'),     'client_secret' => env('FB_APP_SECRET'),     'redirect' => env('FB_CALLBACK_URL'), ],

Conforme mostrado no código acima, temos que armazenar os detalhes do nosso aplicativo e a URL de retorno de chamada no arquivo .env.

FB_APP_ID=PASTE_APP_ID_HERE FB_APP_SECRET=PASTE_APP_SECRET_HERE FB_CALLBACK_URL=YOU_SITE_URL/login/facebook/callback

Passamos o URL de retorno de chamada como YOU_SITE_URL / login / facebook / retorno de chamada. Agora é hora de criar duas rotas, uma para redirecionar o usuário ao provedor OAuth (no nosso caso, Facebook) e outra para receber o callback do provedor após a autenticação.

Código real para lidar com OAuth

Neste estágio, concluímos todas as configurações do Laravel Socialite. É hora de escrever algum código que lida com o redirecionamento OAuth e busque os detalhes do usuário.

Abra seu arquivo login.blade.php e coloque o código abaixo nele, provavelmente após o botão de envio.

<div class="form-group">     <div class="col-md-6 col-md-offset-4">         Login with         <a href="{{ url('/login/facebook') }}"><i class="fa fa-facebook-official" aria-hidden="true"></i> Facebook</a>         <a href="{{ url('/login/twitter') }}"><i class="fa fa-twitter" aria-hidden="true"></i> Twitter</a>         <a href="{{ url('/login/github') }}"><i class="fa fa-github" aria-hidden="true"></i> Github</a>     </div> </div>

Aqui, estamos adicionando um link para Github e Twitter. As etapas para adicionar OAuth para esses sites sociais também são iguais às do Facebook. Você só precisa criar um aplicativo dos respectivos sites sociais e armazenar esses detalhes da mesma forma que adicionamos para o Facebook.

Em seu arquivo de rota, defina as rotas conforme abaixo.

Route::get('login/{provider}', 'AuthLoginController@redirectToProvider'); Route::get('login/{provider}/callback', 'AuthLoginController@handleProviderCallback');

Em seguida, navegue até app / Http / Controllers / Auth / LoginController.php e modifique o arquivo. Você deve adicionar o código abaixo nele.

<?php   namespace AppHttpControllersAuth;   use AppHttpControllersController; use IlluminateFoundationAuthAuthenticatesUsers; use Socialite; use AppUser; use Auth;   class LoginController extends Controller {     /**      * Redirect the user to the GitHub authentication page.      *      * @return Response      */     public function redirectToProvider($provider)     {         return Socialite::driver($provider)->scopes(['email'])->redirect();     }       /**      * Obtain the user information from GitHub.      *      * @return Response      */     public function handleProviderCallback($provider)     {         $user = Socialite::driver($provider)->user();         $authUser = $this->findOrCreateUser($user, $provider);         Auth::login($authUser, true);         return redirect($this->redirectTo);     }       /**      * If a user has registered before using social auth, return the user      * else, create a new user object.      * @param  $user Socialite user object      * @param $provider Social auth provider      * @return  User      */     public function findOrCreateUser($user, $provider)     {         $authUser = User::where('provider_id', $user->id)->first();         if ($authUser) {             return $authUser;         }         return User::create([             'name'     => $user->name,             'email'    => $user->email,             'provider' => $provider,             'provider_id' => $user->id         ]);     } }

O método redirectToProvider redireciona o usuário para a página de login de um site social. Depois que o usuário autoriza o aplicativo, buscamos as informações do usuário na função handleProviderCallback. Se o usuário não existe em nosso sistema, adicionamos seus detalhes usando o método findOrCreateUser.

Esperamos que você conheça o sistema de login social usando o Laravel Socialite. Se você tiver alguma dúvida ou sugestão, por favor, deixe um comentário abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação