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

Zaloguj się na LinkedIn w Laravel za pomocą Laravel Socialite

14

Dodanie systemu logowania społecznościowego na stronie jest obecnie trendem. Dzięki integracji logowania społecznościowego pominie proces weryfikacji użytkownika. Serwisy społecznościowe już zweryfikowały użytkowników, więc nasza aplikacja nie musi przechodzić tego samego procesu z użytkownikiem. Możemy polegać na serwisach społecznościowych i umożliwić użytkownikowi korzystanie z naszego systemu, jeśli zaloguje się on za pośrednictwem serwisu społecznościowego na naszej stronie internetowej. Facebook, Twitter, Google, LinkedIn to popularne serwisy społecznościowe, które zwykle są zintegrowane jako logowanie społecznościowe do witryny. W tym artykule omówimy logowanie za pomocą LinkedIn w Laravel.

W naszym samouczku zintegruję login LinkedIn ze świeżą instalacją Laravela. Mam zamiar zainstalować Laravela, stworzyć tabelę „users" i zainstalować pakiety wymagane do integracji systemu logowania społecznościowego.

Uruchom poniższe polecenie, aby zainstalować Laravel. Tutaj tworzę projekt jako ‘linkedinlogin’.

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

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

Ten samouczek opiera się na logowaniu do LinkedIn, więc po pomyślnym uwierzytelnieniu otrzymamy identyfikator profilu LinkedIn użytkownika. Aby przechowywać ten identyfikator społecznościowy, dodajemy kolumny provider i provider_id. Tutaj kolumna dostawcy będzie przechowywać wartość „linkedin”, a provider_id będzie przechowywać identyfikator społecznościowy użytkownika.

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

Otwórz plik migracji tabeli użytkowników 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();
    });
}

Uruchom poniższe polecenie, które utworzy tabele w naszej bazie danych.

php artisan migrate

Musimy również dodać te dwie kolumny w naszym modelu użytkownika.

aplikacja/Użytkownik.php

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

Utwórz aplikację LinkedIn

Aby zintegrować login LinkedIn, należy utworzyć aplikację na swoim koncie LinkedIn. Potrzebujemy identyfikatora klienta, tajemnicy klienta aplikacji LinkedIn. W aplikacji musimy również ustawić autoryzowany adres URL przekierowania.

  • Przejdź do sieci programistów LinkedIn.
  • Kliknij przycisk „Utwórz aplikację”.
  • Uzupełnij informacje w formularzu.
  • Dodaj http://localhost:8000/linkedin/callbackw polu Autoryzowane adresy URL przekierowania.
  • Skopiuj klucze Client ID i Client Secret.

Zaloguj się na LinkedIn w Laravel za pomocą Laravel Socialite

Po wykonaniu powyższych kroków musisz dodać produkt „Zaloguj się przez LinkedIn” do swojej aplikacji LinkedIn. Kliknij zakładkę „produkty” i wybierz „Zaloguj się przez LinkedIn”. Po wybraniu tego produktu przejdzie on do przeglądu, a następnie zostanie dodany jako produkt dodany. Sprawdzenie może zająć trochę czasu. W moim przypadku zajęło to około 10 minut.

Zaloguj się na LinkedIn w Laravel za pomocą Laravel Socialite

Twórz trasy i kontroler

Możemy teraz zacząć dodawać kod w Laravelu. Utwórz kontroler LoginControllerza pomocą polecenia:

php artisan make:controller LoginController

Następnie utwórz plik kasetowy login.blade.phpi dodaj do niego następujący kod HTML.

<a href="{{ url('/login/linkedin') }}">
    {{ __('Login with LinkedIn') }}
</a>

Nazwij ten widok z indexmetody w LoginControllernastępujący sposób.

public function index()
{
    return view('login');
}

Zdefiniujmy dla niego trasy. 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 LinkedIn, przekieruję go na hometrasę. To tylko do celów demonstracyjnych. Powinieneś zmienić tę trasę na coś innego.

Zaloguj się na LinkedIn Laravel

Laravel ma oficjalny pakiet Socialite. Ten pakiet pomaga nam łatwo zintegrować system logowania społecznościowego w Laravel. Zainstaluj ten pakiet za pomocą polecenia:

composer require laravel/socialite

Po zainstalowaniu biblioteki otwórz config/services.phpi dodaj konfigurację LinkedIn w następujący sposób:

'linkedin' => [
    'client_id' => env('LINKEDIN_CLIENT_ID'),
    'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
    'redirect' => env('LINKEDIN_CALLBACK_URL'),
],

Teraz musimy dodać nasze stałe wartości do .envpliku.

LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID
LINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET
LINKEDIN_CALLBACK_URL=http://localhost:8000/linkedin/callback

Pamiętaj, aby zastąpić symbole zastępcze ich rzeczywistymi wartościami. Ostateczne poprawki powinny znaleźć się w LoginController.phppliku. W tym pliku piszemy funkcję, która przekierowuje użytkownika na stronę logowania LinkedIn, a po udanej autoryzacji zaloguje użytkownika.

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 Linkedin authentication page.
     *
     * @return Response
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->scopes(['r_liteprofile', 'r_emailaddress'])->redirect();
    }
   
    /**
     * Obtain the user information from Linkedin.
     *
     * @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
        ]);
    }
}

W naszym LoginControllerustalamy zakresy ['r_liteprofile', 'r_emailaddress']wymagane do pobrania podstawowych informacji o użytkowniku LinkedIn. W metodzie callback sprawdzamy, czy użytkownik istnieje, a jeśli nie, to dodajemy go do bazy danych.

Mam nadzieję, że rozumiesz, jak zalogować się na LinkedIn w Laravel. Chciałbym usłyszeć wasze przemyślenia i 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