✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Logga in med LinkedIn i Laravel med Laravel Socialite

18

Att lägga till socialt inloggningssystem på webbplatsen är trenden idag. Genom att integrera social inloggning hoppar det över användarens verifieringsprocess. Sociala webbplatser har redan verifierat användare så att vår applikation inte behöver följa samma process med en användare. Vi kan lita på sociala webbplatser och låta användaren använda vårt system om de loggar in via en social webbplats på vår webbplats. Facebook, Twitter, Google, LinkedIn är populära sociala webbplatser som normalt integreras som en social inloggning på webbplatsen. I den här artikeln kommer vi att täcka inloggning med LinkedIn i Laravel.

För vår handledning integrerar jag LinkedIn-inloggning på den nya Laravel-installationen. Jag ska installera Laravel, skapa en "användartabell" och installera de paket som krävs för att integrera det sociala inloggningssystemet.

Kör kommandot nedan för att installera Laravel. Här skapar jag ett projekt som ‘linkedinlogin’.

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

Efter installationen skapar du databasen och anger autentiseringsuppgifterna i .envfilen. Vi bygger ett inloggningssystem så vi bör lagra användarinformation i databasen.

Denna handledning är baserad på LinkedIn-inloggning så att vi får användarens LinkedIn-profil-ID efter framgångsrik autentisering. För att lagra detta sociala id lägger vi till kolumner leverantör och provider_id. Här sparar leverantörskolumnen värdet ‘linkedin’ och provider_id lagrar användarens sociala id.

När vi använde social inloggning behöver vi inte lagra lösenord så lösenordskolumnvärdet ska acceptera ‘NULL’ som standard. Det finns ingen garanti för att få användarens e-post efter social inloggning så för nyfikenhet måste vi ställa in e-postkolumnen för att acceptera ‘NULL’.

Öppna migrationsfilen för användartabellen och lägg till koden nedan.

/**
 * 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();
    });
}

Kör kommandot nedan som skapar tabellerna i vår databas.

php artisan migrate

Vi måste också lägga till dessa två kolumner i vår användarmodell.

app / User.php

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

Skapa LinkedIn-applikation

För att integrera LinkedIn-inloggningen bör du skapa applikationen på ditt LinkedIn-konto. Vi behöver klient-id, klienthemlighet för LinkedIn-applikationen. Vi måste också ange en auktoriserad omdirigerings-URL i applikationen.

  • Gå till LinkedIn Developer Network.
  • Klicka på knappen ‘Skapa applikation’.
  • Fyll i informationen på formuläret.
  • Lägg till http://localhost:8000/linkedin/callbacki fältet Auktoriserade omdirigeringsadresser.
  • Kopiera klient-ID och klienthemliga nycklar.

Efter ovanstående steg måste du lägga till produkten ‘Logga in med LinkedIn’ i din LinkedIn-applikation. Klicka på fliken "produkter" och välj "Logga in med LinkedIn". När du väljer den här produkten kommer den att granskas och sedan inkluderas som en tillagd produkt. Detta kan ta lite tid för granskning. I mitt fall tog det cirka tio minuter.

Logga in med LinkedIn i Laravel med Laravel Socialite

Skapa rutter och kontroller

Vi kan nu börja lägga till en kod i Laravel. Skapa en styrenhet LoginControllermed kommandot:

php artisan make:controller LoginController

Skapa sedan en bladfil login.blade.phpoch lägg till följande HTML i den.

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

Kalla denna vy från indexmetoden enligt LoginControllerföljande.

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

Låt oss definiera rutterna för det. Jag lägger också till några fler rutter som kommer att krävas i nästa del av handledningen.

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';
});

När en användare loggar in med LinkedIn kommer jag att omdirigera dem till homerutten. Det är bara för demoändamål. Du bör ändra denna rutt till något annat.

Logga in med LinkedIn Laravel

Laravel har ett officiellt paket Socialite. Detta paket hjälper oss att enkelt integrera det sociala inloggningssystemet i Laravel. Installera detta paket med kommandot:

composer require laravel/socialite

När du har installerat biblioteket öppnar du config/services.phpoch lägger till LinkedIn-konfiguration enligt följande:

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

Nu måste vi lägga till våra konstanta värden i .envfilen.

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

Se till att ersätta platshållare med deras faktiska värden. De slutliga justeringarna bör ingå i LoginController.phpfilen. I den här filen skriver vi en funktion som omdirigerar en användare till LinkedIn-inloggningssidan, och vid lyckad auktorisering kommer den att logga in användaren.

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
        ]);
    }
}

I vårt LoginControllerställer vi in ​​de omfattningar ['r_liteprofile', 'r_emailaddress']som krävs för att hämta grundläggande information om en LinkedIn-användare. I återuppringningsmetoden kontrollerar vi om användaren finns och om det inte är det, lägg till användaren i databasen.

Jag hoppas att du förstår hur du loggar in med LinkedIn i Laravel. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer