✅ 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

15

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