Kirjaudu Twitteriin Laravelissa Laravel Socialiten avulla
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 .env
tiedostoon. 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 provider
ja provider_id
käyttäjien taulukkoon. Sarake provider
tallentaa arvon nimellä twitter ” ja sarake
provider_id
on 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ä provider
ja 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 LoginController
komento:
php artisan make:controller LoginController
Meidän on lisättävä sisäänkirjautumislinkki terätiedostoon. Luo a login.blade.php
ja lisää siihen seuraava HTML.
<a href="{{ url('/login/twitter') }}" class="btn btn-success">
{{ __('Login with Twitter') }}
</a>
Voit kutsua tätä näkymää index
menetelmä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 home
reitille. 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.php
ja 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 env
menetelmää määritettyjen arvojen saamiseen. Se tarkoittaa, että meidän on määriteltävä nämä vakiot .env
tiedostossa.
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 LoginController
kirjoitamme 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ä. users
Taulukosta 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.