✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kirjaudu Twitteriin Laravelissa Laravel Socialiten avulla

28

Olen äskettäin julkaissut artikkelin Kirjaudu sisään Twitterillä PHP: ssä. Yksi lukijoistamme pyysi kirjoittamaan artikkelin kirjautumisesta Twitteriin Laravelissa. Vaikka Laravel on rakennettu PHP-ohjelmointikielelle ja kirjoitin Twitter-kirjautumisesta PHP: ssä, tiedän, että aiempi opetusohjelma ei sovellu Laravel-kehykseen. Laravelilla on oma kansiorakenteensa, kehitysvirta. Kehittäjän tulisi noudattaa Laravelin standardeja rakentaessaan siihen verkkosovelluksia.

Laravelilla on viralliset paketit, jotka auttavat kehittäjiä saavuttamaan tietyt toiminnot. Yksi paketeista on Socialite. Socialite-sovelluksen avulla voit integroida sosiaalisen sisäänkirjautumisen eri palveluntarjoajille, kuten Facebook, Twitter, LinkedIn, Google jne.

Tässä artikkelissa tutkitaan sisäänkirjautumista Twitterillä Laravelissa Laravel Socialiten avulla.

Päästä alkuun

Aloitetaan tuoreesta Laravel-asennuksesta. Uuden Laravel-asennuksen käyttö ei ole pakollista, vaan voit käyttää myös nykyistä projektiasi.

Asenna uusin Laravel suorittamalla seuraava komento:

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

Luo asennuksen jälkeen tietokanta ja lisää tunnistetiedot .envtiedostoon. Rakennamme kirjautumisjärjestelmää, joten meidän tulisi tallentaa käyttäjän tiedot tietokantaan.

Tämä opetusohjelma perustuu Kirjaudu sisään Twitterillä, joten saamme käyttäjän Twitter-tunnuksen onnistuneen todennuksen jälkeen. Tämän sosiaalisen tunnuksen tallentamiseksi lisäämme sarakkeita providerja provider_idkäyttäjien taulukkoon. Sarake providertallentaa arvon nimellä twitter ” ja sarake provider_idon käyttäjän Twitter-tunnukselle.

Kun käytämme sosiaalista sisäänkirjautumista, meidän ei tarvitse tallentaa salasanoja, joten salasanasarakkeen tulisi hyväksyä NULL-arvo oletuksena. Ei ole takeita käyttäjän sähköpostin saamisesta sosiaalisen kirjautumisen jälkeen, joten uteliaisuuden vuoksi meidän on myös asetettava sähköpostisarakkeet hyväksymään NULL-arvo.

Avaa ‘käyttäjän’ 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 tämän jälkeen siirtokomento, joka luo taulukot tietokantaan.

php artisan migrate

Sinun on myös lisättävä providerja provider_id-sarakkeet käyttäjämalliin.

app / User.php

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

Hanki Twitter-kirjautumistiedot

Koska aiomme integroida Twitter-kirjautumisen Laraveliin, sinun on ensin hankittava Twitter-kirjautumistiedot. Luo Twitter-sovellus ja hanki kirjautumistiedot noudattamalla seuraavia ohjeita.

  • Kirjaudu sisään Twitter-kehittäjätilille ja luo uusi sovellus.
  • Täytä kaikki vaaditut kentät, kuten sovelluksen nimi ja kuvaus.
  • Lisää verkkosivustosi verkkotunnus Sivusto-kenttään.
  • Aseta takaisinsoiton URL-osoite http://localhost:8000/twitter/callback. Säädä URL-osoite vaatimuksesi mukaan.
  • Kun olet rekisteröitynyt, kopioi ja liitä luotut sovellustiedot (Consumer Key and Secret), jotka vaativat jonkin aikaa.

Näitä kopioituja tunnistetietoja käyttämällä Laravel-sovelluksesi täydentää OAuth-kulkua, kun käyttäjät kirjautuvat sisään Twitter-tilillään.

Luo reitit ja ohjain

Jotta voimme sisällyttää Twitteriin kirjautumisen toiminnot, meidän on lisättävä koodi Laravel-projektiimme. Luodaan LoginControllerkomento:

php artisan make:controller LoginController

Meidän on lisättävä sisäänkirjautumislinkki terätiedostoon. Luo a login.blade.phpja lisää siihen seuraava HTML.

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

Voit kutsua tätä näkymää indexmenetelmästä LoginController.

/**
 * Call the view
 */
public function index()
{
    return view('login');
}

Lisää seuraavaksi reitti sille. Lisään myös muutama reitti, joita tarvitaan opetusohjelman seuraavaan osaan.

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 Twitterillä, ohjaan heidät homereitille. Se on vain demotarkoituksiin. Sinun pitäisi vaihtaa tämä reitti joksikin muuksi.

Kirjaudu sisään Twitterillä Laravelissa

On aika käyttää Socialite-pakettia nyt. Alla olevan komennon avulla voit asentaa Socialite-paketin Laravel-projektiisi.

composer require laravel/socialite

Kun Socialite on asennettu, meidän on määritettävä se. Avaa config/services.phpja lisää Twitter-kokoonpano tähän tiedostoon seuraavasti:

'twitter' => [
    'client_id' => env('TWITTER_API_KEY'),
    'client_secret' => env('TWITTER_API_SECRET_KEY'),
    'redirect' => env('TWITTER_CALLBACK_URL'),
],

Saatat huomata, että käytin envmenetelmää määritettyjen arvojen saamiseen. Se tarkoittaa, että meidän on määriteltävä nämä vakiot .envtiedostossa.

TWITTER_API_KEY=PASTE_TWITTER_API_KEY
TWITTER_API_SECRET_KEY=PASTE_TWITTER_API_SECRET_KEY
TWITTER_CALLBACK_URL=http://localhost:8000/twitter/callback

Muista korvata paikkamerkit todellisilla API-avaimilla. Seuraavaksi LoginControllerkirjoitamme toiminnon, joka ohjaa käyttäjän Twitter-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 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
        ]);
    }
}

Siirry kirjautumissivulle ja napsauta Kirjaudu sisään Twitter-linkkiä. Viimeistele prosessi ja kirjaudu järjestelmään Twitterillä. usersTaulukosta saattaa löytyä myös käyttäjien merkintöjä .

Toivon, että saatat oppia kirjautumisesta Twitteriin Laravelissa Socialite-paketin avulla. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja