Авторизация через Yandex, ВК, Telegram с помощью Laravel Socialite

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Вступление

В интернете есть множество статей и руководств по интеграции OAuth авторизации через популярных провайдеров, таких как Google, Facebook и Twitter, в проекты на Laravel. Но как это сделать через Yandex, ВК и т.п. информации в рунете вообще нет.

Буду показывать на примере Яндекса. Через другие провайдеры делайте аналогично.

Шаг 1. Создание приложения

Для начала регистрируем наше приложение в Yandex OAuth

Вводим название и т.к. используем Laravel - выбираем Веб-сервисы
Вводим название и т.к. используем Laravel - выбираем Веб-сервисы
Вставляем ссылку на страницу, куда будет перенаправлен пользователь после авторизации (например на главную)
Вставляем ссылку на страницу, куда будет перенаправлен пользователь после авторизации (например на главную)

После регистрации приложения переходим на страницу нашего приложения и сохраняем эти 3 поля, они нам понадобятся чуть позже.

Шаг 2. Установка Socialite

Устанавливаем Laravel Socialite в наш проект через composer

composer require laravel/socialite

Устанавливаем SocialiteProviders

SocialiteProviders - это расширение для Laravel Socialite, которое добавляет поддержку многих дополнительных OAuth-провайдеров, включая Yandex, ВК, Telegram и другие. Полный список провайдеров на их сайте.

composer require socialiteproviders/yandex

Шаг 3. Настройка проекта

В файле config/services.php добавим настройки для Yandex:

'yandex' => [
    'client_id' => env('YANDEX_CLIENT_ID'),
    'client_secret' => env('YANDEX_CLIENT_SECRET'),
    'redirect' => env('YANDEX_REDIRECT_URI'), ],

Вставляем в .env файл переменные которые нам дал Яндекс:

YANDEX_CLIENT_ID=*ClientID*
YANDEX_CLIENT_SECRET=*Client secret*
YANDEX_REDIRECT_URI=*Redirect URI для веб-сервисов*

Добавим маршруты для перенаправления на Yandex и обработки обратного вызова:

Route::get('login/yandex', [AuthenticatedSessionController::class, 'yandex'])->name('yandex');
Route::get('login/yandex/redirect', [AuthenticatedSessionController::class, 'yandexRedirect'])->name('yandexRedirect');

Добавим необходимые функции в контроллер:

    use Laravel\Socialite\Facades\Socialite;
    use Str;   

   public function yandex() // перенаправляем юзера на яндекс Auth
    {
        return Socialite::driver('yandex')->redirect();
    }

    public function yandexRedirect() // принимаем возвращаемые данные и работаем с ними
    {
        $user = Socialite::driver('yandex')->user();

        $user = User::firstOrCreate([ // используем firstOrCreate для проверки есть ли такие пользователи в нашей БД
            'email' => $user->email
        ], [
            'name' => $user->user['display_name'], // display_name - переменаая хранящая полное ФИО пользователя
                                                  // остальные переменные можете посмотреть использовав $dd('$user')
            'password' => Hash::make(Str::random(24)),
        ]);

        Auth::login($user, true);

        redirect()->route('main');
    }

Ставив на кнопку "войти через яндекс" наш первый маршрут и готово. По такой же схеме делаете telegram, vk и другие сервисы указанные в socialiteproviders.

Источник: https://habr.com/ru/articles/825134/


Интересные статьи

Интересные статьи

В предыдущей статье я рассказывал об Авакари - системе обратного поиска в потоке сообщений. С тех пор прошло некоторое время на обкатку системы и добавление новых функций. Наконец,...
Как реализовать рабочую IoT систему на API Telegram, создавать устройства, предусмотрев масштабируемость и развитие проекта.
Довольно давно Яндекс предоставляет платные сервисы по синтезу и распознанию речи. К сожалению, интерфейса для регулярного использования сервисов нет, поэтому на досуге написал скрипт, который позволя...
Заготовка функционального узла перспективного российского двигателя ПД-14, полностью созданная методом прямого лазерного выращивания, была представлена на Международном авиационно-космическом сал...
Для уважаемых читателей GeekTimes очередная (четвёртая) долгожданная статья о том, что будет, если снова замешать ардуинку, ESP8266, WI-FI, приправить смартфоном на Android и посыпать сверх JAVA ...