Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite
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 .env
failis 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/callback
väljale Volitatud ümbersuunamise URL-id. - Kopeerige kliendi ID ja kliendi saladuse võtmed.
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.
Loo marsruudid ja kontroller
Nüüd saame hakata Laravelis koodi lisama. Looge kontroller LoginController
käsuga:
php artisan make:controller LoginController
Järgmisena looge labafail login.blade.php
ja lisage sellele järgmine HTML.
<a href="{{ url('/login/linkedin') }}">
{{ __('Login with LinkedIn') }}
</a>
Nimetame seda vaade index
meetod LoginController
jä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 home
marsruudile. 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.php
ja 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 .env
faili 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.php
failis. 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 LoginController
mää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.