Kirjaudu sisään LinkedInillä Laravelissa Laravel Socialiten avulla
Sosiaalisen kirjautumisjärjestelmän lisääminen verkkosivustolle on nykyään trendi. Integroimalla sosiaalinen sisäänkirjautuminen se ohittaa käyttäjän vahvistusprosessin. Sosiaaliset sivustot ovat jo vahvistaneet käyttäjät, joten sovelluksemme ei tarvitse noudattaa samaa prosessia käyttäjän kanssa. Voimme luottaa sosiaalisiin sivustoihin ja antaa käyttäjän käyttää järjestelmäämme, jos hän kirjautuu sisään verkkosivustomme sosiaalisen sivuston kautta. Facebook, Twitter, Google, LinkedIn ovat suosittuja sosiaalisia sivustoja, jotka on yleensä integroitu sosiaaliseksi sisäänkirjautumiseksi verkkosivustolle. Tässä artikkelissa käsitellään sisäänkirjautumista LinkedInin kanssa Laravelissa.
Oppaamme varten integroin LinkedIn-kirjautumisen uuteen Laravel-asennukseen. Aion asentaa Laravelin, luoda ‘käyttäjien’ taulukon ja asentaa paketit, joita tarvitaan sosiaalisen kirjautumisjärjestelmän integroimiseen.
Asenna Laravel suorittamalla alla oleva komento. Täällä luon projektin ” kirjautuneena ”.
composer create-project --prefer-dist laravel/laravel linkedinlogin
Luo asennuksen jälkeen tietokanta ja aseta .env
tiedostoon kirjautumistiedot. Rakennamme kirjautumisjärjestelmää, joten meidän tulisi tallentaa käyttäjän tiedot tietokantaan.
Tämä opetusohjelma perustuu LinkedIn-kirjautumiseen, joten saamme käyttäjän LinkedIn-profiilin tunnuksen onnistuneen todennuksen jälkeen. Tämän sosiaalisen tunnuksen tallentamiseksi lisäämme sarakkeet tarjoaja ja tarjoajan tunnus. Tässä palveluntarjoajan sarake tallentaa arvon ‘linkedin’ ja tarjoajan_tunnus tallentaa käyttäjän sosiaalisen tunnuksen.
Kun käytimme sosiaalista sisäänkirjautumista, meidän ei tarvitse tallentaa salasanoja, joten salasanasarakkeen arvon tulisi hyväksyä oletusarvo ‘NULL’. Ei ole takeita käyttäjän sähköpostin saamisesta sosiaalisen sisäänkirjautumisen jälkeen, joten uteliaisuuden vuoksi meidän on myös asetettava sähköpostisarake hyväksymään NULL.
Avaa käyttäjien taulukon siirtotiedosto ja lisää koodi alla.
/**
* 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();
});
}
Suorita alla oleva komento, joka luo taulukot tietokantaamme.
php artisan migrate
Meidän on myös lisättävä nämä kaksi saraketta käyttäjämalliin.
app / User.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'provider', 'provider_id'
];
Luo LinkedIn-sovellus
LinkedIn-sisäänkirjautumisen integroimiseksi sinun on luotava sovellus LinkedIn-tilillesi. Tarvitsemme LinkedIn-sovelluksen asiakastunnuksen, asiakassalaisuuden. Meidän on myös määritettävä valtuutettu uudelleenohjauksen URL-osoite sovelluksessa.
- Siirry LinkedIn-kehittäjäverkostoon.
- Napsauta Luo sovellus -painiketta.
- Täytä lomakkeen tiedot.
- Lisää
http://localhost:8000/linkedin/callback
Valtuutetut uudelleenohjaus-URL-osoitteet -kenttään. - Kopioi asiakastunnus ja asiakassalaisuudet.
Edellä mainittujen vaiheiden jälkeen sinun on lisättävä tuote ‘Kirjaudu sisään LinkedInillä’ LinkedIn-sovellukseesi. Napsauta Tuotteet-välilehteä ja valitse Kirjaudu sisään LinkedInillä. Kun valitset tämän tuotteen, se tarkistetaan ja lisätään sitten lisätyksi tuotteeksi. Tämä voi kestää jonkin aikaa tarkistamiseen. Minun tapauksessani kesti noin 10 minuuttia.
Luo reitit ja ohjain
Voimme nyt aloittaa koodin lisäämisen Laraveliin. Luo ohjain LoginController
komennolla:
php artisan make:controller LoginController
Luo seuraavaksi korttitiedosto login.blade.php
ja lisää siihen seuraava HTML.
<a href="{{ url('/login/linkedin') }}">
{{ __('Login with LinkedIn') }}
</a>
Kutsuvat tätä näkymä index
menetelmää LoginController
seuraavasti.
public function index()
{
return view('login');
}
Määritetään sen reitit. Lisään myös muutaman reitin, jotka vaaditaan opetusohjelman seuraavassa osassa.
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';
});
Kun käyttäjä kirjautuu sisään LinkedInillä, ohjaan heidät home
reitille. Se on vain demotarkoituksiin. Sinun pitäisi vaihtaa tämä reitti joksikin muuksi.
Kirjaudu sisään LinkedIn Laravelilla
Laravelilla on virallinen paketti Socialite. Tämä paketti auttaa meitä integroimaan sosiaalisen kirjautumisjärjestelmän helposti Laraveliin. Asenna tämä paketti komennolla:
composer require laravel/socialite
Kun olet asentanut kirjaston, avaa config/services.php
ja lisää LinkedIn-määritykset seuraavasti:
'linkedin' => [
'client_id' => env('LINKEDIN_CLIENT_ID'),
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
'redirect' => env('LINKEDIN_CALLBACK_URL'),
],
Nyt meidän on lisättävä vakioarvomme .env
tiedostoon.
LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID
LINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET
LINKEDIN_CALLBACK_URL=http://localhost:8000/linkedin/callback
Muista korvata paikkamerkit niiden todellisilla arvoilla. Viimeisten säätöjen tulisi olla LoginController.php
tiedostossa. Tässä tiedostossa kirjoitamme toiminnon, joka ohjaa käyttäjän LinkedIn-kirjautumissivulle, ja onnistuneen valtuutuksen yhteydessä se kirjaa käyttäjän sisään.
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
]);
}
}
Asetuksessamme LoginController
asetamme soveltamisalat, ['r_liteprofile', 'r_emailaddress']
joita tarvitaan LinkedIn-käyttäjän perustietojen noutamiseen. Soittomenetelmässä tarkistamme onko käyttäjä olemassa ja jos ei ole, lisätään sitten käyttäjä tietokantaan.
Toivon, että ymmärrät, kuinka kirjaudut sisään LinkedInillä Laravelissa. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.