Розробка авторизації через Однокласники
Одна з частих помилок при інтеграції авторизації через Однокласники (OK.ru) — плутанина з трьома ключами: application_id, application_key, application_secret_key. Ми стикалися з проєктами, де application_secret_key зашивали в мобільний клієнт, що дискваліфікує безпеку. Правильний підхід — зберігати application_secret_key на сервері та виконувати підписані запити там. OK використовує OAuth2, але з обов'язковим підписом кожного запиту до API, що відрізняє його від класичних провайдерів. Це ускладнює інтеграцію в 2-3 рази порівняно з VK, але гарантує додатковий рівень безпеки. Порівняно з VK, OK забезпечує додатковий захист за рахунок обов'язкового підпису, що знижує ризик витоку токенів — це мінімізує витрати на безпеку.
Як підключити авторизацію через Однокласники?
Реєстрація додатка на apiok.ru — перший крок. Отримуємо три ключі: application_id, application_key, application_secret_key. application_key потрібен при підписі запитів, application_secret_key — ніколи не передається клієнту.
На iOS: додаємо URL Scheme ok{application_id}. В AppDelegate — [OKSDK handleOpenURL:url]. SDK автоматично обирає спосіб: якщо додаток OK встановлено — авторизація всередині нього, інакше — браузерний OAuth2.
На Android: Gradle-залежність ru.ok.android:sdk:latest. Налаштування аналогічне: схеми ok{app_id}:// в AndroidManifest.xml.
Після авторизації отримуємо access_token та refresh_token. Токен живе 30 днів, refresh обов'язковий. Офіційна документація OK API рекомендує реалізовувати refresh flow на серверній стороні. Правильна реалізація заощадить до 30% бюджету на повторні доробки.
Чому підпис запитів OK API — вузьке місце?
На відміну від VK або Google, OK вимагає підпису кожного запиту. Алгоритм:
sig = MD5( sorted_params_string + MD5(access_token + application_secret_key) ) Параметри сортуються за алфавітом, конкатенуються, потім двічі хешуються. Помилка PARAM_SIGNATURE_INVALID — найчастіша.
Ми рекомендуємо реалізовувати підпис на серверній стороні. Мобільний клієнт передає access_token на backend, backend робить підписані запити до OK API. Це захищає application_secret_key від витоку через декомпіляцію.
Метод users.getCurrentUser з полями name,pic_3,email — для отримання профілю. Email необов'язковий. Серверна верифікація: users.getLoggedInUser?access_token={token} повертає uid, якщо токен валідний.
Як уникнути PARAM_SIGNATURE_INVALID?
Помилка виникає через неправильний підпис. Перевіряйте порядок параметрів (строго за алфавітом), наявність access_token та secret_key. Використовуйте налагодження через офіційний інструмент на apiok.ru, щоб звірити сигнатуру.
Порівняння з VK SDK
| Параметр | Однокласники (OK) | VK |
|---|---|---|
| OAuth2 | Так | Так |
| Підпис запитів | Обов'язковий (MD5) | Не потрібен |
| Ключі | 3 (id, key, secret_key) | 1 (client_secret) |
| Складність інтеграції | Вища через підпис | Нижча |
OK складніший у 2-3 рази за часом інтеграції порівняно з VK через підпис, але це виправдано підвищеною безпекою.
Порівняння підходів: SDK vs прямий HTTP
| Параметр | OK SDK | Прямий HTTP |
|---|---|---|
| Автоматичний вибір додатка | Так | Ні |
| Підтримка Universal Links | Так | Ні |
| Контроль над UI | Обмежений | Повний |
| Час розробки | Менше | Більше |
Що входить у роботу
- Налаштування додатка на apiok.ru, отримання ключів
- Інтеграція OK SDK (iOS/Android або cross-platform)
- Реалізація OAuth2 flow з підтримкою refresh token
- Серверна частина: підпис запитів, верифікація токена, отримання профілю
- Документація з використання
- Тестування на пристроях з / без додатка ОК
- Підтримка протягом гарантійного терміну (3 місяці)
Процес і терміни
- Аналітика: 1-2 дні (уточнення вимог, підготовка схеми)
- Проєктування: 1 день (вибір стеку, архітектура)
- Інтеграція SDK та OAuth2: 2-3 дні
- Серверний підпис та API: 2-3 дні
- Тестування: 1-2 дні
- Деплой та приймання: 1 день
Орієнтовні терміни: від 5 до 12 робочих днів залежно від складності. Вартість розраховується індивідуально. При правильній реалізації ви економите на повторних доробках — помилка підпису може коштувати 2-3 додаткових дні.
Ми маємо понад 5 років досвіду інтеграції соціальних мереж, реалізували понад 20 проєктів з авторизацією через OK. Зв'яжіться з нами для оцінки вашого проєкту — підберемо оптимальне рішення. Отримайте консультацію до початку розробки.
Типові сценарії помилок:
- Зберігання
application_secret_keyу клієнті — небезпечно та веде до витоку - Відсутність refresh токена — користувач буде змушений переавторизовуватися кожні 30 днів
- Відсутність перевірки
uidна сервері — підробка токена можлива
Якщо ви зіткнулися з неочевидними проблемами при інтеграції, замовте аудит поточної реалізації — це заощадить час і бюджет.







