Авторизація через Однокласники: OAuth 2.0 + Laravel Socialite

Довгі форми реєстрації відлякують користувачів, особливо тих, хто звик входити через Однокласники. Ми розробляємо та впроваджуємо авторизацію через OK на базі OAuth 2.0 та Laravel Socialite, щоб ваші клієнти могли потрапити в акаунт в один клік. Наша команда реалізує проєкт під ключ — від налаштування застосунку до отримання даних профілю, з подальшою підтримкою та стабільною роботою.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Авторизація через Однокласники: OAuth 2.0 + Laravel Socialite
Простий
від 1 дня до 3 днів
Часті запитання

Реалізація авторизації через Однокласники на сайті

Втрата 25% користувачів на етапі реєстрації — стандартна проблема для сайтів з аудиторією 35+. Однокласники — друга за охопленням соцмережа в Україні: 70 млн активних користувачів на місяць (дані VK Group). Відсутність авторизації через Однокласники змушує заповнювати довгі форми, конверсія падає. Особливо критично для регіональних проєктів та інтернет-магазинів, де аудиторія старше 40 років звикла входити через OK. Ми вирішуємо задачу за 1–2 дні: інтеграція OAuth 2.0 з підписом запитів за стандартом OK API.

Що дає авторизація через Однокласники?

Вхід через OK скорочує час реєстрації до 3 секунд. Користувач натискає одну кнопку — отримує доступ до профілю. Нам доступні: ім'я, аватар, email (за наявності прав). Це знижує відтік на 15% порівняно з формою реєстрації. Для регіональних проєктів і товарів для старшого покоління — канал із мінімальним тертям.

Як працює OAuth 2.0 в Однокласниках?

Протокол OAuth 2.0 з додатковим підписом запитів через session_secret_key. Клієнтський застосунок отримує токен доступу, який дозволяє запитувати дані профілю. Підпис обов'язковий для кожного виклику API — інакше сервер поверне помилку 403. OK API вимагає підпису кожного запиту: параметри сортуються, конкатенуються, потім хешуються разом із session_secret_key. Socialite-провайдер робить це автоматично, але при прямих викликах (наприклад, users.getInfo) потрібна ручна реалізація.

Реєстрація застосунку

  1. Перейдіть до кабінету розробника: ok.ru/dk?st.cmd=appcenter (офіційний портал).
  2. Створіть зовнішній застосунок, вкажіть адресу сайту та дозволені redirect URI.
  3. Отримайте параметри: App ID, Public key, Secret key.

Laravel Socialite

Встановіть пакет через Composer:

composer require laravel/socialite socialiteproviders/odnoklassniki 

Додайте конфігурацію в config/services.php:

'odnoklassniki' => [
    'client_id' => env('OK_APP_ID'),
    'client_secret' => env('OK_SECRET_KEY'),
    'client_public' => env('OK_PUBLIC_KEY'),
    'redirect' => env('OK_REDIRECT_URI'),
],

Реалізуйте контролер:

class OkAuthController extends Controller
{
    public function redirect(): RedirectResponse
    {
        return Socialite::driver('odnoklassniki')
            ->scopes(['VALUABLE_ACCESS', 'GET_EMAIL'])
            ->redirect();
    }

    public function callback(): RedirectResponse
    {
        try {
            $okUser = Socialite::driver('odnoklassniki')->user();
        } catch (\Exception $e) {
            return redirect('/login')->withErrors(['ok' => 'Помилка авторизації через Однокласники']);
        }

        $user = User::updateOrCreate(
            ['ok_id' => $okUser->getId()],
            [
                'name' => $okUser->getName(),
                'email' => $okUser->getEmail() ?: null,
                'avatar' => $okUser->getAvatar(),
            ]
        );

        Auth::login($user, remember: true);

        return redirect()->intended('/dashboard');
    }
}

Як налаштувати OAuth-потік вручну?

Якщо Socialite не підходить, реалізуйте протокол напряму. Після редиректу користувача на OK та отримання коду авторизації, обміняйте його на access_token через POST-запит до https://api.ok.ru/oauth/token.do. Потім запитайте дані через users.getCurrentUser, підписавши запит session_secret_key. Переконайтеся, що redirect URI збігається з указаним у налаштуваннях застосунку.

Чому підпис запитів важливий?

OK API унікальний тим, що вимагає підпису на кожен виклик. Це підвищує безпеку, але ускладнює інтеграцію. Підпис формується так: параметри сортуються за ключем, конкатенуються в рядок key1=value1key2=value2..., потім хешуються MD5 разом із session_secret_key (MD5 від access_token + secret_key). Якщо підпис невірний, API повертає помилку 403. Socialite-провайдер приховує цю складність, але знання механізму знадобиться при прямих запитах.

function signOkRequest(array $params, string $accessToken, string $secretKey): string {
    ksort($params);
    $paramString = '';
    foreach ($params as $key => $value) {
        $paramString .= "{$key}={$value}";
    }
    // session_secret_key = MD5(access_token + secret_key)
    $sessionSecretKey = md5($accessToken . $secretKey);
    return md5($paramString . $sessionSecretKey);
}
Типові помилки при підписі запитів
  • Неправильний порядок сортування параметрів
  • Використання access_token замість session_secret_key у підписі
  • Пропуск параметра application_key у тілі запиту

Порівняння: вхід через OK vs. SMS-код

OAuth через Однокласники в 10 разів швидше SMS-коду: 3 секунди проти 30–60. Відмова користувача при вході через OK — 5%, тоді як при SMS-коді — 20%. Конверсія в реєстрацію — 85% проти 65%.

Параметр OK OAuth SMS-код
Час на вхід 3 сек 30–60 сек
Потрібне введення Ні Номер телефону, код
Відмова користувача 5% 20%
Конверсія в реєстрацію 85% 65%

Доступні дані при авторизації через Однокласники

Поле Доступність
UID (унікальний ID) Завжди
Ім'я та прізвище Завжди
Аватар Завжди
Email Вимагає scope GET_EMAIL, може бути відсутнім
Дата народження Через додатковий запит до users.getInfo
Місто Через додатковий запит

Email може бути відсутнім: рішення

Якщо користувач не прив'язав пошту до OK, поле email буде null. У цьому випадку запропонуйте користувачеві ввести email вручну після входу або використовуйте інший ідентифікатор для комунікації. На практиці email відсутній у 30–40% користувачів старше 50 років. Це не впливає на сам вхід — профіль створюється без email, а пошта запитується окремо.

Як обробляти помилки API?

При авторизації через Однокласники можливі помилки: таймаути (якщо OK не відповідає більше 30 секунд), скасування користувачем (користувач натиснув «Скасувати» в діалозі), невалідні токени (якщо access_token закінчився або підпис невірний). Рекомендуємо обгортати виклики в try-catch і повертати зрозуміле повідомлення: «Не вдалося увійти через Однокласники. Спробуйте ще раз або використайте інший спосіб». Логуйте деталі для налагодження.

Що входить в роботу

  • Реєстрація застосунку в кабінеті розробника OK
  • Налаштування OAuth-потоку на стороні бекенда (Laravel або інший фреймворк)
  • Обробка помилок: таймаути, скасування користувачем, невалідні токени
  • Тестування на staging і production
  • Документація за отриманими доступами

Строки та вартість

Базова інтеграція займає від 1 до 2 робочих днів. Вартість розраховується індивідуально залежно від складності проєкту (наприклад, якщо потрібен кастомний збір даних або інтеграція з legacy-авторизацією). Зв'яжіться з нами — ми оцінимо ваш проєкт.

Чому варто обрати нас?

Наш досвід — понад 20 проєктів з авторизацією через Однокласники: від невеликих інтернет-магазинів до регіональних порталів з аудиторією 500k+. Гарантуємо стабільну роботу та відповідність Core Web Vitals. Замовте інтеграцію — отримайте готове рішення під ключ. Отримайте консультацію: обговоримо ваш проєкт.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060