...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Войдите в LinkedIn в Laravel с помощью Laravel Socialite

112

В настоящее время модно добавить на сайт систему входа в социальные сети. Благодаря интеграции входа в систему через социальную сеть процесс проверки пользователя будет пропущен. Социальные сайты уже проверили пользователей, поэтому нашему приложению не нужно следовать тому же процессу с пользователем. Мы можем полагаться на социальные сайты и позволять пользователям использовать нашу систему, если они входят в систему через социальный сайт на нашем веб-сайте. 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. Здесь в столбце provider будет храниться значение 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

Нам также нужно добавить эти два столбца в нашу пользовательскую модель.

приложение / 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее