...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite

21

Sotsiaalse sisselogimissüsteemi lisamine veebisaidile on tänapäeval trend. Sotsiaalse sisselogimise integreerimisega jätab see kasutaja kinnitamisprotsessi vahele. Sotsiaalsed saidid on kasutajaid juba kinnitanud, nii et meie rakendus ei pea kasutajatega sama protsessi järgima. Võime tugineda sotsiaalsetele saitidele ja lubada kasutajal meie süsteemi kasutada, kui ta meie veebisaidil sotsiaalse saidi kaudu sisse logib. Facebook, Twitter, Google, LinkedIn on populaarsed sotsiaalsed saidid, mis on tavaliselt veebisaidile sotsiaalse sisselogimisena integreeritud. Selles artiklis käsitleme Laraveli LinkedIniga sisselogimist.

Meie õpetuse jaoks integreerin LinkedIni sisselogimise värskesse Laraveli installi. Kavatsen installida Laraveli, luua kasutajate tabeli ja installida sotsiaalse sisselogimissüsteemi integreerimiseks vajalikud paketid.

Laraveli installimiseks käivitage allolev käsk. Siin olen koostamas projekti nimega "loginlog".

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

Pärast installimist looge andmebaas ja määrake .envfailis mandaadid. Ehitame sisselogimissüsteemi, nii et peaksime kasutajaandmed andmebaasi salvestama.

See õpetus põhineb LinkedIni sisselogimisel, nii et pärast edukat autentimist saame kasutaja LinkedIni profiili ID. Selle sotsiaalse ID salvestamiseks lisame veerud pakkuja ja pakkuja ID. Siin teenuseosutaja veerus salvestatakse väärtus ‘linkedin’ ja teenuse_ ID salvestab kasutaja sotsiaalse ID.

Kui kasutasime sotsiaalset sisselogimist, ei pea me paroole salvestama, nii et parooliveeru väärtus peaks vaikimisi aktsepteerima väärtust "NULL". Pole mingit garantiid kasutaja e-posti saamiseks pärast sotsiaalset sisselogimist, nii et uudishimu huvides peame seadistama ka e-posti veeru aktsepteerima väärtust "NULL".

Avage kasutajate tabeli migreerimisfail ja lisage allolev kood.

/**
 * 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äivitage allpool käsk, mis loob meie andmebaasis tabelid.

php artisan migrate

Samuti peame need kaks veergu oma kasutajamudelisse lisama.

app / User.php

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

Looge LinkedIni rakendus

LinkedIni sisselogimise integreerimiseks peaksite looma rakenduse oma LinkedIni kontole. Vajame kliendi ID-d, LinkedIni rakenduse kliendisaladust. Samuti peame rakenduses määrama volitatud ümbersuunamise URL-i.

  • Minge LinkedIni arendajavõrku.
  • Klõpsake nuppu ‘Loo rakendus’.
  • Täitke teave vormil.
  • Lisage http://localhost:8000/linkedin/callbackväljale Volitatud ümbersuunamise URL-id.
  • Kopeerige kliendi ID ja kliendi saladuse võtmed.

Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite

Pärast ülaltoodud toiminguid peate oma LinkedIni rakendusse lisama toote "Logi sisse LinkedIniga". Klõpsake vahekaarti „tooted" ja valige „Logi sisse LinkedIniga”. Selle toote valimisel läheb see ülevaatamisele ja lisatakse seejärel lisatud toodetena. See võib ülevaatamiseks aega võtta. Minu puhul võttis see aega umbes 10 minutit.

Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite

Loo marsruudid ja kontroller

Nüüd saame hakata Laravelis koodi lisama. Looge kontroller LoginControllerkäsuga:

php artisan make:controller LoginController

Järgmisena looge labafail login.blade.phpja lisage sellele järgmine HTML.

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

Nimetame seda vaade indexmeetod LoginControllerjärgmiselt.

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

Määratleme selle marsruudid. Lisan ka veel mõned marsruudid, mida nõutakse õpetuse järgmises osas.

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

Kui kasutaja logib sisse LinkedIniga, suunan nad homemarsruudile. See on lihtsalt demo eesmärgil. Peaksite selle marsruudi millekski muuks muutma.

Logi sisse LinkedIn Laraveliga

Laravelil on ametlik pakett Socialite. See pakett aitab meil Laraveli sotsiaalse sisselogimissüsteemi hõlpsasti integreerida. Installige see pakett käsuga:

composer require laravel/socialite

Pärast teegi installimist avage config/services.phpja lisage LinkedIni konfiguratsioon järgmiselt:

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

Nüüd peame .envfaili lisama oma püsiväärtused .

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

Asendage kohatäited nende tegelike väärtustega. Lõplikud kohandused peaksid toimuma LoginController.phpfailis. Selles failis kirjutame funktsiooni, mis suunab kasutaja LinkedIni sisselogimislehele ja edukal autoriseerimisel logib kasutaja sisse.

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

Meie LoginControllermäärasime ulatused, ['r_liteprofile', 'r_emailaddress']mis on vajalikud LinkedIni kasutaja põhiteabe hankimiseks. Tagasihelistamismeetodis kontrollime, kas kasutaja on olemas ja kui pole, siis lisage kasutaja andmebaasi.

Loodetavasti saate aru, kuidas Laravelis LinkedIniga sisse logida. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem