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

Faça login com o LinkedIn no Laravel usando o Laravel Socialite

40

Adicionar sistema de login social no site é a tendência hoje em dia. Ao integrar o login social, ele irá ignorar o processo de verificação de um usuário. Os sites sociais já verificaram usuários, portanto, nosso aplicativo não precisa seguir o mesmo processo com um usuário. Podemos contar com sites de redes sociais e permitir que o usuário use nosso sistema se fizer login através de um site de redes sociais em nosso site. Facebook, Twitter, Google, LinkedIn são os sites sociais populares que normalmente são integrados como um login social ao site. Neste artigo, vamos cobrir um login com LinkedIn no Laravel.

Para o nosso tutorial, irei integrar o login do LinkedIn na nova instalação do Laravel. Vou instalar o Laravel, criar uma tabela de ‘usuários’ e instalar os pacotes necessários para integrar o sistema de login social.

Execute o comando abaixo para instalar o Laravel. Aqui estou criando um projeto como ‘linkedinlogin’.

composer create-project --prefer-dist laravel/laravel linkedinlogin

Após a instalação, crie o banco de dados e defina as credenciais no .envarquivo. Estamos construindo um sistema de login, portanto, devemos armazenar os detalhes do usuário no banco de dados.

Este tutorial é baseado no login do LinkedIn, portanto, obteremos o ID do perfil do usuário no LinkedIn após a autenticação bem-sucedida. Para armazenar esse id social, estamos adicionando as colunas provider e provider_id. Aqui, a coluna do provedor armazenará o valor ‘linkedin’ e o provider_id armazenará o ID social do usuário.

Quando usamos o login social, não precisamos armazenar senhas, então o valor da coluna de senha deve aceitar ‘NULL’ como padrão. Não há garantia de obter o e-mail do usuário após o login social, portanto, por curiosidade, precisamos definir a coluna de e-mail também para aceitar ‘NULL’.

Abra o arquivo de migração da tabela de usuários e adicione o código abaixo.

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->nullable();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password')->nullable();
        $table->string('provider');
        $table->string('provider_id');
        $table->rememberToken();
        $table->timestamps();
    });
}

Execute o comando abaixo que irá criar as tabelas em nosso banco de dados.

php artisan migrate

Também precisamos adicionar essas duas colunas em nosso modelo de usuário.

app / User.php

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password', 'provider', 'provider_id'
];

Criar aplicativo LinkedIn

Para integrar o login do LinkedIn, você deve criar o aplicativo em sua conta do LinkedIn. Precisamos do ID do cliente, segredo do cliente do aplicativo LinkedIn. Também precisamos definir um URL de redirecionamento autorizado no aplicativo.

  • Vá para LinkedIn Developer Network.
  • Clique no botão ‘Criar aplicativo’.
  • Preencha as informações do formulário.
  • Adicione http://localhost:8000/linkedin/callbackno campo URLs de redirecionamento autorizado.
  • Copie o ID do cliente e as chaves secretas do cliente.

Faça login com o LinkedIn no Laravel usando o Laravel Socialite

Após as etapas acima, você precisa adicionar o produto ‘Sign in With LinkedIn’ ao seu aplicativo LinkedIn. Clique na guia ‘produtos’ e escolha ‘Sign In with LinkedIn’. Ao selecionar este produto, ele irá para revisão e então incluído como um produto adicionado. Isso pode levar algum tempo para revisão. No meu caso, demorou cerca de 10 minutos.

Faça login com o LinkedIn no Laravel usando o Laravel Socialite

Criar rotas e controlador

Agora podemos começar a adicionar um código no Laravel. Crie um controlador LoginControllerusando o comando:

php artisan make:controller LoginController

Em seguida, crie um arquivo blade login.blade.phpe adicione o seguinte HTML a ele.

<a href="{{ url('/login/linkedin') }}">
    {{ __('Login with LinkedIn') }}
</a>

Chame essa visão a partir do indexmétodo a LoginControllerseguir.

public function index()
{
    return view('login');
}

Vamos definir as rotas para isso. Também estou adicionando mais algumas rotas que serão necessárias na próxima parte do tutorial.

Route::get('login', 'LoginController@index');
Route::get('login/{provider}', 'LoginController@redirectToProvider');
Route::get('{provider}/callback', 'LoginController@handleProviderCallback');
Route::get('/home', function() {
    return 'User is logged in';
});

Quando um usuário fizer o login com o LinkedIn, vou redirecioná-lo para a homerota. É apenas para fins de demonstração. Você deve alterar esta rota para outra coisa.

Entrar com LinkedIn Laravel

O Laravel tem um pacote oficial Socialite. Este pacote nos ajuda a integrar facilmente o sistema de login social no Laravel. Instale este pacote usando o comando:

composer require laravel/socialite

Depois de instalar a biblioteca, abra config/services.phpe adicione a configuração do LinkedIn da seguinte forma:

'linkedin' => [
    'client_id' => env('LINKEDIN_CLIENT_ID'),
    'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
    'redirect' => env('LINKEDIN_CALLBACK_URL'),
],

Agora, precisamos adicionar nossos valores constantes no .envarquivo.

LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID
LINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET
LINKEDIN_CALLBACK_URL=http://localhost:8000/linkedin/callback

Certifique-se de substituir os marcadores de posição por seus valores reais. Os ajustes finais devem ir no LoginController.phparquivo. Neste arquivo, estamos escrevendo uma função que redireciona um usuário para a página de login do LinkedIn e, com a autorização bem-sucedida, fará o login do usuário.

LoginController.php

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use Socialite;
use AppModelsUser;
use Auth;
 
class LoginController extends Controller
{
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';
 
    /**
     * Call the view
     */
    public function index()
    {
        return view('login');
    }
 
    /**
     * Redirect the user to the Linkedin authentication page.
     *
     * @return Response
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->scopes(['r_liteprofile', 'r_emailaddress'])->redirect();
    }
   
    /**
     * Obtain the user information from Linkedin.
     *
     * @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
        ]);
    }
}

Em nosso LoginController, definimos os escopos ['r_liteprofile', 'r_emailaddress']necessários para buscar informações básicas de um usuário do LinkedIn. No método de retorno de chamada, estamos verificando se o usuário existe e, caso não exista, adicionamos o usuário ao banco de dados.

Espero que você entenda como fazer o Login com o LinkedIn no Laravel. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários 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