Інтеграція Одноклассники API у мобільний додаток
Одноклассники (OK.ru) — друга за розміром російськомовна соціальна мережа. Аудиторія зміщена у бік 35+, актуальна для додатків з сегментів ретейлу, медіа, сервісів для сім'ї. API називається OK API, OAuth-потік стандартний, але підпис запитів відрізняється від ВКонтакте.
Реєстрація додатку та ключі
На dev.ok.ru створюємо додаток, отримуємо три ключі: application_id, application_key (публічний), application_secret_key (приватний, тільки на сервері). Тип додатку — «Mobile».
Авторизація: 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.
Підпис запитів
Це головне відрізнення OK API. Кожний запит підписується:
sig = MD5(params_sorted_alphabetically + MD5(access_token + application_secret_key))
Кроки:
- Беремо всі параметри запиту крім
sigтаaccess_token. - Сортуємо по імені параметра, конкатенуємо в рядок
key=value. - Рахуємо
session_secret = MD5(access_token + application_secret_key)— це робиться на сервері, секрет не передається клієнту. -
sig = MD5(params_string + session_secret).
Передавати application_secret_key на клієнт нельзя — тільки через бекенд-прокси. Архітектура: клієнт запитує ваш бекенд → бекенд додає підпис → проксирує запит до OK API.
OK SDK для мобільних платформ
iOS: OKLoginSDK через CocoaPods або SPM (неофіційний). Офіційного підтримуваного Swift SDK немає — зазвичай реалізують OAuth-потік вручну через ASWebAuthenticationSession.
Android: Офіційний ok-android-sdk на GitHub. Gradle:
implementation 'ru.ok.android:sdk:3.0.18'
Авторизація:
OkAuthManager.startOkAutoExternal(activity, listOf(OkScope.GET_EMAIL, OkScope.VALUABLE_ACCESS))
// У onActivityResult:
val token = OkAuthManager.onActivityResult(requestCode, resultCode, data, listener)
Отримання даних користувача
GET https://api.ok.ru/fb.do
?method=users.getCurrentUser
&fields=NAME,PIC_1,LOCATION,EMAIL,GENDER
&access_token=...
&application_key=...
&sig=...
&format=json
Поля профілю OK відрізняються від VK: NAME — ім'я, LAST_NAME — фамілія, PIC_1 — аватар 50x50, PIC_3 — аватар 128x128. Email видається тільки при scope GET_EMAIL та тільки якщо користувач його вказав.
Публікація в OK
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.
Помилки
-
PARAM_SESSION_EXPIRED— токен істік. OK токени живуть 30-60 днів, refresh token — довше. -
PERMISSION_DENIED— недостатньо scope. -
SERVICE_UNAVAILABLE— API тимчасово недоступна, повтор через exponential backoff.
Терміни
Авторизація через OK + імпорт профілю з бекенд-прокси для підпису — 2-3 дня. Публікація з медіа — ще 1 день. Вартість розраховується індивідуально.







