Інтеграція OK API: авторизація, публікація, підпис

Інтеграція Однокласники API в мобільний додаток Помилка підпису — головний біль при інтеграції OK API. Без правильного підпису API повертає `PARAM_SESSION_EXPIRED` або `PERMISSION_DENIED`. Типова проблема — передача секретного ключа на клієнт, що веде до компрометації. Цього можна уникнути, викор

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція OK API: авторизація, публікація, підпис
Простий
~2-3 дні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Інтеграція Однокласники API в мобільний додаток

Помилка підпису — головний біль при інтеграції OK API. Без правильного підпису API повертає PARAM_SESSION_EXPIRED або PERMISSION_DENIED. Типова проблема — передача секретного ключа на клієнт, що веде до компрометації. Цього можна уникнути, використовуючи бекенд-проксі, який підписує запити, не розкриваючи ключ. Передача application_secret_key на клієнт робить додаток вразливим до реверс-інжинірингу та крадіжки ключа. Використання HTTPS з сертифікатом не вирішує проблему — ключ повинен зберігатися тільки на бекенді. Архітектура з проксі-сервером гарантує, що секретний ключ ніколи не покине вашу інфраструктуру. Клієнт відправляє запит на ваш сервер, сервер додає підпис і проксіює його в OK API.

Однокласники (OK.ru) — друга за розміром російськомовна соцмережа з аудиторією 35+. Вона актуальна для рітейлу, медіа та сімейних сервісів. Наш досвід — 7+ років мобільної розробки, більше 50 проєктів з інтеграцією соцмереж. Інтеграція OK API включає три ключові завдання: авторизацію через OAuth 2.0, підпис запитів і публікацію контенту. Кожна вимагає точного дотримання протоколу. Отримайте консультацію з інтеграції OK API — ми оцінимо ваш проєкт за 1 день.

Як працює підпис запитів до OK API?

Це головна відмінність API. Кожен запит підписується:

sig = MD5(params_sorted_alphabetically + MD5(access_token + application_secret_key)) 

Згідно з документацією OK, підпис обов'язковий для всіх запитів до API. Кроки:

  1. Беремо всі параметри запиту крім sig і access_token.
  2. Сортуємо за ім'ям параметра, конкатенуємо в рядок key=value.
  3. Рахуємо session_secret = MD5(access_token + application_secret_key) — це session_secret обчислюється на сервері, секрет не передається клієнту.
  4. sig = MD5(params_string + session_secret).

Передавати application_secret_key на клієнт не можна — тільки через бекенд-проксі. Архітектура: клієнт запитує ваш бекенд → бекенд додає підпис → проксіює запит до OK API.

Реєстрація додатку та ключі

На dev.ok.ru створюємо додаток, тип — «Mobile». Отримуємо три ключі: application_id, application_key (публічний), application_secret_key (приватний, тільки на сервері). Для iOS вкажіть bundle ID, для Android — package name та SHA1-відбиток.

Які SDK використовувати для інтеграції з Однокласниками?

Платформа SDK Доступність Статус
iOS OKLoginSDK (CocoaPods/SPM) Обмежена (неофіційний) Ручна реалізація
Android ok-android-sdk (Gradle) Офіційний Активний

iOS: Офіційного Swift SDK немає — зазвичай реалізують OAuth-потік вручну через ASWebAuthenticationSession.

Android: Офіційний ok-android-sdk на GitHub. Підключення:

implementation 'ru.ok.android:sdk:3.0.18' 

Авторизація:

OkAuthManager.startOkAutoExternal(activity, listOf(OkScope.GET_EMAIL, OkScope.VALUABLE_ACCESS)) val token = OkAuthManager.onActivityResult(requestCode, resultCode, data, listener) 

Офіційний Android SDK у 2 рази прискорює інтеграцію порівняно з самописним OAuth-потоком.

Як уникнути помилок підпису при інтеграції з OK API?

Помилки підпису — часте джерело проблем. Ось типові сценарії та їх вирішення:

  • Виключення access_token з параметрів підпису: access_token не бере участі в генерації sig. Якщо випадково включити його, підпис стане недійсним. За статистикою, ~70% запитів з помилкою підпису викликані цією причиною.
  • Порядок параметрів: Сортування за алфавітом строге. Навіть один параметр не на місці — помилка PARAM_SESSION_EXPIRED.
  • Кодування: Параметри повинні бути в UTF-8, без URL-кодування. Подвійне кодування ламає підпис.
  • Термін життя session_secret: Обчислюється один раз і кешується на час сесії. Не перераховуйте його на кожен запит.

Авторизація: OAuth 2.0 + підпис запитів

Авторизація через WebView або системний браузер:

https://connect.ok.ru/oauth/authorize?client_id=YOUR_APP_ID&scope=GET_EMAIL;VALUABLE_ACCESS;PHOTO_CONTENT&response_type=code&redirect_uri=yourapp://oauth

Після отримання code — обмінюємо на access_token через POST на https://api.ok.ru/oauth/token.do.

Що потрібно для публікації контенту?

Scope VALUABLE_ACCESS обов'язковий. Публікація через mediatopic.post:

POST https://api.ok.ru/fb.do method=mediatopic.post &type=USER_STATUS &attachment={"media":[{"type":"text","text":"Текст поста"}]} 

Для публікації з фото: спочатку завантажуємо через photosV2.getUploadUrl, потім використовуємо photo token в attachment.

Отримання даних користувача

GET https://api.ok.ru/fb.do?method=users.getCurrentUser&fields=NAME,PIC_1,LOCATION,EMAIL,GENDER&access_token=...&application_key=...&sig=...&format=json

Поле Опис
NAME Ім'я користувача
LAST_NAME Прізвище
PIC_1 Аватар 50x50
PIC_3 Аватар 128x128
EMAIL Email (тільки з scope GET_EMAIL)
GENDER Стать
LOCATION Локація

Помилки та їх обробка

  • PARAM_SESSION_EXPIRED — токен вичерпався. OK токени живуть 30-60 днів, refresh token — довше.
  • PERMISSION_DENIED — недостатньо scope.
  • SERVICE_UNAVAILABLE — API тимчасово недоступний, повтор через експоненційний backoff.

Чому варто обрати нашу інтеграцію?

Гарантуємо коректний підпис запитів та безпеку ключів. Входимо до пулу сертифікованих розробників зі стажем 7+ років. Надаємо документацію та підтримку після впровадження. Замовте інтеграцію OK API під ключ — ми реалізуємо повний цикл від налаштування OAuth до публікації контенту.

Терміни та обсяг робіт

Авторизація через OK + імпорт профілю з бекенд-проксі — 2-3 дні. Публікація з медіа — ще 1-2 дні. Вартість розраховується індивідуально.

Зв'яжіться з нами для оцінки вашого проєкту.