✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Увійдіть за допомогою LinkedIn в Laravel за допомогою Laravel Socialite

20

Додавання системи соціального входу на веб-сайті – це тенденція сьогодні. Інтегруючи соціальний логін, він пропускає процес перевірки користувача. Соціальні сайти вже перевірили користувачів, тому нашій програмі не потрібно виконувати той самий процес із користувачем. Ми можемо покластися на соціальні сайти і дозволити користувачеві користуватися нашою системою, якщо він входить через соціальний сайт на нашому веб-сайті. Facebook, Twitter, Google, LinkedIn – це популярні соціальні сайти, які зазвичай інтегровані як соціальний логін на веб-сайті. У цій статті ми розглянемо логін за допомогою LinkedIn у Laravel.

Для нашого підручника я інтегрую вхід LinkedIn у свіжу інсталяцію Laravel. Я збираюся встановити Laravel, створити таблицю "користувачів" та встановити пакети, необхідні для інтеграції соціальної системи входу.

Виконайте команду нижче, щоб встановити Laravel. Тут я створюю проект як ‘linkedinlogin’.

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

Після встановлення створіть базу даних та встановіть облікові дані у .envфайлі. Ми будуємо систему входу, тому ми повинні зберігати дані користувачів у базі даних.

Цей підручник заснований на вході в LinkedIn, тому ми отримаємо ідентифікатор профілю LinkedIn користувача після успішної автентифікації. Для збереження цього соціального ідентифікатора ми додаємо стовпці provider і provider_id. Тут стовпець провайдера буде зберігати значення ‘linkedin’, а provider_id – соціальний ідентифікатор користувача.

Коли ми використовували соціальний логін, нам не потрібно зберігати паролі, тому значення стовпця пароля повинно приймати значення NULL за замовчуванням. Немає жодних гарантій отримання електронної пошти користувача після входу в соціальну мережу, тому для цікавості нам потрібно встановити для стовпця електронної пошти також значення "NULL".

Відкрийте файл міграції таблиці користувачів і додайте код нижче.

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

Запустіть команду нижче, яка створить таблиці в нашій базі даних.

php artisan migrate

Нам також потрібно додати ці два стовпці в нашу модель користувача.

app / User.php

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

Створіть додаток LinkedIn

Для того, щоб інтегрувати логін LinkedIn, вам слід створити програму у своєму акаунті LinkedIn. Нам потрібен ідентифікатор клієнта, секрет клієнта програми LinkedIn. Нам також потрібно встановити в додатку авторизовану URL-адресу для переадресації.

  • Перейдіть до мережі розробників LinkedIn.
  • Натисніть кнопку "Створити програму".
  • Заповніть інформацію у формі.
  • Додайте http://localhost:8000/linkedin/callbackу поле Авторизовані URL-адреси для переспрямування.
  • Скопіюйте ідентифікатор клієнта та секретні ключі клієнта.

Увійдіть за допомогою LinkedIn в Laravel за допомогою Laravel Socialite

Після вищевказаних кроків вам потрібно додати продукт "Увійти за допомогою LinkedIn" до своєї програми LinkedIn. Клацніть на вкладку "продукти" та виберіть "Увійти за допомогою LinkedIn". Після вибору цього продукту він буде переглянутий, а потім включений як доданий товар. Це може зайняти деякий час для перегляду. У моєму випадку це зайняло близько 10 хвилин.

Увійдіть за допомогою LinkedIn в Laravel за допомогою Laravel Socialite

Створіть маршрути та контролер

Тепер ми можемо почати додавати код у Laravel. Створіть контролер LoginControllerза допомогою команди:

php artisan make:controller LoginController

Далі створіть файл леза login.blade.phpі додайте до нього такий HTML.

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

Викличте цей вигляд indexметодом LoginControllerнаступним чином.

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

Давайте визначимо маршрути для нього. Я також додаю ще кілька маршрутів, які будуть потрібні в наступній частині підручника.

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

Коли користувач увійде в систему з LinkedIn, я перенаправлю його на homeмаршрут. Це просто для демонстраційних цілей. Вам слід змінити цей маршрут на інший.

Увійдіть за допомогою LinkedIn Laravel

Laravel має офіційний пакет Socialite. Цей пакет допомагає нам легко інтегрувати систему соціального входу в Laravel. Встановіть цей пакет за допомогою команди:

composer require laravel/socialite

Після встановлення бібліотеки відкрийте config/services.phpта додайте конфігурацію LinkedIn наступним чином:

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

Тепер нам потрібно додати наші константи у .envфайл.

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

Обов’язково замінюйте заповнювачі фактичними значеннями. Остаточні коригування повинні йти у LoginController.phpфайлі. У цьому файлі ми пишемо функцію, яка перенаправляє користувача на сторінку входу LinkedIn, і після успішної авторизації він ввійде в систему.

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

У нашому LoginController, ми встановлюємо області дії, ['r_liteprofile', 'r_emailaddress']які необхідні для отримання основної інформації користувача LinkedIn. У методі зворотного виклику ми перевіряємо, чи існує користувач, і якщо його немає, то додаємо користувача до бази даних.

Сподіваюся, ви розумієте, як увійти в систему з LinkedIn в Laravel. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі