Logige sisse Twitteris Laravelis, kasutades teenust Laravel Socialite
Hiljuti avaldasin artikli PHP-s sisselogimisega Twitteriga. Üks meie lugejatest palus kirjutada Laravelis Twitteriga sisselogimise kohta artikli. Kuigi Laravel on ehitatud PHP programmeerimiskeelele ja ma kirjutasin Twitteris sisselogimisest PHP-s, tean, et varasem õpetus ei sobi Laraveli raamistiku jaoks. Laravelil on oma kaustastruktuur, arendusvoog. Arendaja peaks selles veebirakendusi ehitades järgima Laraveli standardeid.
Laravelil on ametlikud paketid, mis aitavad arendajatel teatud funktsionaalsust saavutada. Üks pakettidest on Socialite. Socialite’i abil saate integreerida sotsiaalse sisselogimise erinevate pakkujatega, nagu Facebook, Twitter, LinkedIn, Google jne.
Selles artiklis uurime Laravelis Socialite’i abil sisselogimist Twitteriga Laravelis.
Alustamine
Alustame värskest Laraveli installatsioonist. Uue Laraveli installi kasutamine pole kohustuslik, saate kasutada ka oma olemasolevat projekti.
Uusima Laraveli installimiseks käivitage järgmine käsk:
composer create-project --prefer-dist laravel/laravel twitterlogin
Pärast installimist looge andmebaas ja lisage .env
faili mandaadid. Ehitame sisselogimissüsteemi, nii et peaksime kasutajaandmed andmebaasi salvestama.
See õpetus põhineb sisselogimisel Twitteriga, et saaksime kasutaja Twitteri ID pärast edukat autentimist. Selle sotsiaalse ID salvestamiseks lisame veerud provider
ja provider_id
kasutajate tabelisse. Veerg provider
salvestab väärtuse ‘twitter’ ja veerg provider_id
on kasutaja Twitteri ID jaoks.
Sotsiaalse sisselogimise kasutamisel ei pea me paroole salvestama, nii et parooliveerg 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 veerud, et aktsepteerida 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();
});
}
Pärast seda käivitage migreerimiskäsk, mis loob teie andmebaasi tabelid.
php artisan migrate
Samuti peate kasutajamudelisse lisama provider
ja provider_id
veerud.
app / User.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'provider', 'provider_id'
];
Hankige Twitteri volikirjad
Kuna me integreerime Twitteri sisselogimise Laraveli, peate kõigepealt hankima oma Twitteri mandaadi. Twitteri rakenduse loomiseks ja volituste saamiseks järgige alltoodud samme.
- Logige sisse Twitteri arendajakontole ja looge uus rakendus.
- Täitke kõik kohustuslikud väljad, näiteks rakenduse nimi ja kirjeldus.
- Lisage oma veebisaidi domeen väljale Veeb.
- Määrake tagasihelistamise URL-ks
http://localhost:8000/twitter/callback
. Kohandage URL vastavalt oma nõudele. - Kui olete registreerunud, kopeerige ja kleepige loodud rakenduse mandaadid (tarbija võti ja saladus), mis vajavad mõnda aega.
Nende kopeeritud mandaatide abil lõpetab teie Laraveli rakendus OAuthi voo, kui kasutajad logivad sisse oma Twitteri kontoga.
Loo marsruudid ja kontroller
Twitterisse sisselogimise funktsionaalsuse kaasamiseks peame oma Laraveli projekti lisama koodi. Loome LoginController
käsu abil:
php artisan make:controller LoginController
Peame lisama terafaili sisselogimislingi. Looge a login.blade.php
ja lisage sellele järgmine HTML.
<a href="{{ url('/login/twitter') }}" class="btn btn-success">
{{ __('Login with Twitter') }}
</a>
Seda vaadet saate helistada index
meetodilt LoginController
.
/**
* Call the view
*/
public function index()
{
return view('login');
}
Järgmisena lisage sellele marsruut. Lisan ka veel mõned marsruudid, mida on vaja õpetuse järgmise osa jaoks.
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 on Twitteriga sisse loginud, suunan nad home
marsruudile. See on lihtsalt demo eesmärgil. Peaksite selle marsruudi millekski muuks muutma.
Laravelisse logige sisse Twitteriga
Nüüd on aeg kasutada paketti Socialite. Alloleva käsu abil saate paketi Socialite installida oma Laraveli projekti.
composer require laravel/socialite
Pärast Socialite’i installimist peame selle konfigureerima. Avage config/services.php
ja lisage sellele failile Twitteri konfiguratsioon järgmiselt:
'twitter' => [
'client_id' => env('TWITTER_API_KEY'),
'client_secret' => env('TWITTER_API_SECRET_KEY'),
'redirect' => env('TWITTER_CALLBACK_URL'),
],
Võite märgata, et kasutasin env
meetodit määratud väärtuste saamiseks. See tähendab, et peame need konstandid .env
failis määratlema .
TWITTER_API_KEY=PASTE_TWITTER_API_KEY
TWITTER_API_SECRET_KEY=PASTE_TWITTER_API_SECRET_KEY
TWITTER_CALLBACK_URL=http://localhost:8000/twitter/callback
Asendage kohatäited oma tegelike API-võtmetega. Järgmisena LoginController
kirjutame funktsiooni, mis suunab kasutaja Twitteri 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 Twitter authentication page.
*
* @return Response
*/
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
/**
* Obtain the user information from Twitter.
*
* @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
]);
}
}
Minge sisselogimislehele ja klõpsake linki "Logi sisse Twitteriga". Viige protsess lõpule ja peaksite süsteemi sisse logima Twitteri abil. Samuti võite users
tabelist leida kasutajate kirjeid .
Loodan, et saate Socialite paketi abil õppida Laravelis Twitteriga sisselogimise kohta. Tahaksin kuulda teie mõtteid või ettepanekuid allpool olevas kommentaaride jaotises.