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

Logige sisse Twitteris Laravelis, kasutades teenust Laravel Socialite

28

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 .envfaili 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 providerja provider_idkasutajate tabelisse. Veerg providersalvestab väärtuse ‘twitter’ ja veerg provider_idon 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 providerja provider_idveerud.

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 LoginControllerkäsu abil:

php artisan make:controller LoginController

Peame lisama terafaili sisselogimislingi. Looge a login.blade.phpja lisage sellele järgmine HTML.

<a href="{{ url('/login/twitter') }}" class="btn btn-success">
    {{ __('Login with Twitter') }}
</a>

Seda vaadet saate helistada indexmeetodilt 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 homemarsruudile. 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.phpja 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 envmeetodit määratud väärtuste saamiseks. See tähendab, et peame need konstandid .envfailis 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 LoginControllerkirjutame 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 userstabelist 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.

seotud artiklid

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