✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Zaloguj się za pomocą Twittera w Laravel za pomocą Laravel Socialite

23

Niedawno opublikowałem artykuł na temat logowania przez Twittera w PHP. Jeden z naszych czytelników poprosił o napisanie artykułu o logowaniu przez Twittera w Laravelu. Chociaż Laravel jest zbudowany na języku programowania PHP i pisałem o logowaniu do Twittera w PHP, wiem, że poprzedni samouczek nie jest odpowiedni dla frameworka Laravel. Laravel ma własną strukturę folderów, przepływ rozwoju. Deweloper powinien przestrzegać standardów Laravela budując w nim aplikacje internetowe.

Laravel ma swoje oficjalne pakiety, które pomagają deweloperom osiągnąć określoną funkcjonalność. Jednym z pakietów jest Socialite. Korzystając z Socialite, możesz zintegrować login społecznościowy z różnymi dostawcami, takimi jak Facebook, Twitter, LinkedIn, Google itp.

W tym artykule przyjrzymy się Logowaniu za pomocą Twittera w Laravel przy użyciu Laravel Socialite.

Pierwsze kroki

Zacznijmy od nowej instalacji Laravela. Korzystanie z nowej instalacji Laravela nie jest obowiązkowe, możesz również użyć istniejącego projektu.

Aby zainstalować najnowszą wersję Laravela, uruchom poniższe polecenie:

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

Po instalacji utwórz bazę danych i dodaj poświadczenia w .envpliku. Budujemy system logowania, więc powinniśmy przechowywać dane użytkownika w bazie danych.

Ten samouczek jest oparty na funkcji Zaloguj się za pomocą Twittera, więc po pomyślnym uwierzytelnieniu otrzymamy identyfikator użytkownika Twittera. Aby przechowywać ten identyfikator społecznościowy, dodajemy kolumny provideri provider_idtabelę „użytkownicy". Kolumna providerbędzie przechowywać wartość jako „twitter”, a kolumna będzie dotyczyć provider_ididentyfikatora Twittera użytkownika.

Kiedy używamy logowania społecznościowego, nie musimy przechowywać haseł, więc kolumna hasła powinna domyślnie akceptować wartość „NULL”. Nie ma gwarancji otrzymania wiadomości e-mail użytkownika po zalogowaniu się w mediach społecznościowych, więc dla ciekawości musimy ustawić kolumny e-maili, aby akceptowały również wartość „NULL”.

Otwórz plik migracji tabeli „users” i dodaj poniższy kod.

/**  * 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();     }); }

Następnie uruchom komendę migracji, która utworzy tabele w Twojej bazie danych.

php artisan migrate

Musisz również dodać kolumny provideri provider_iddo modelu użytkownika.

aplikacja/Użytkownik.php

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

Uzyskaj dane logowania na Twittera

Ponieważ zamierzamy zintegrować logowanie do Twittera w Laravel, najpierw musisz uzyskać swoje dane logowania do Twittera. Wykonaj poniższe czynności, aby utworzyć aplikację na Twitterze i uzyskać swoje dane uwierzytelniające.

  • Zaloguj się na konto programisty Twittera i utwórz nową aplikację.
  • Wypełnij wszystkie wymagane pola, takie jak nazwa i opis aplikacji.
  • Dodaj domenę swojej witryny w polu Witryna.
  • Ustaw adres URL wywołania zwrotnego jako http://localhost:8000/twitter/callback. Dostosuj adres URL zgodnie z wymaganiami.
  • Po zarejestrowaniu skopiuj i wklej utworzone poświadczenia aplikacji (klucz klienta i klucz tajny), które wymagają za jakiś czas.

Używając tych skopiowanych danych uwierzytelniających, Twoja aplikacja Laravel zakończy przepływ OAuth, gdy użytkownicy zalogują się na swoje konto na Twitterze.

Twórz trasy i kontroler

Aby uwzględnić funkcjonalność logowania przez Twittera, musimy dodać kod w naszym projekcie Laravel. Stwórzmy za LoginControllerpomocą polecenia:

php artisan make:controller LoginController

Musimy dodać link do logowania w pliku ostrza. Utwórz login.blade.phpi dodaj do niego następujący kod HTML.

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

Możesz wywołać ten widok z indexmetody LoginController.

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

Następnie dodaj dla niego trasę. Dodaję też kilka innych tras, które będą wymagane w dalszej części samouczka.

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'; });

Gdy użytkownik zaloguje się na Twitterze, przekieruję go na hometrasę. To tylko do celów demonstracyjnych. Powinieneś zmienić tę trasę na coś innego.

Zaloguj się przez Twittera w Laravel

Czas skorzystać z pakietu Socialite. Za pomocą poniższego polecenia możesz zainstalować pakiet Socialite w swoim projekcie Laravel.

composer require laravel/socialite

Po zainstalowaniu Socialite musimy go skonfigurować. Otwórz config/services.phpi dodaj konfigurację Twittera do tego pliku w następujący sposób:

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

Możesz zauważyć, że użyłem tej envmetody, aby uzyskać określone wartości. Oznacza to, że musimy zdefiniować te stałe w .envpliku.

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

Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi kluczami API. Następnie w LoginController, piszemy funkcję, która przekierowuje użytkownika na stronę logowania Twittera, a po udanej autoryzacji zaloguje go.

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         ]);     } }

Przejdź do strony logowania i kliknij link „Zaloguj się za pomocą Twittera”. Zakończ proces i zaloguj się do systemu za pomocą Twittera. W userstabeli można również znaleźć wpisy użytkowników .

Mam nadzieję, że możesz dowiedzieć się o logowaniu za pomocą Twittera w Laravel za pomocą pakietu Socialite. Chciałbym usłyszeć Twoje przemyślenia lub sugestie w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów