Разработка авторизации через Одноклассники
Авторизация через Одноклассники (OK.ru) — OAuth2 поверх проприетарного API OK. Аудитория ОК специфична: 35+ лет, активно использует мобильное приложение ОК. Если ваш продукт ориентирован на эту демографию или интегрируется с соцсетью (игры, конкурсы, UGC) — интеграция оправдана.
SDK и настройка
OK предоставляет OKiOS SDK (CocoaPods: pod 'OKiOS') и OK Android SDK (Gradle: implementation 'ru.ok.android:sdk:latest'). SDK устроен схоже с VK: при наличии приложения ОК на устройстве — авторизация через него без ввода пароля, без него — браузерный OAuth2.
Регистрация приложения на apiok.ru, получаем application_id, application_key, application_secret_key. Три ключа — типичная путаница. application_key используется при подписи запросов к API, application_secret_key — серверный, никогда в клиенте.
На iOS URL Scheme: ok{application_id}. В AppDelegate — [OKSDK handleOpenURL:url].
После авторизации получаем access_token и refresh_token. ОК токены имеют ограниченный TTL (обычно 30 дней), refresh обязателен.
Запросы к OK API
Особенность OK API — обязательная подпись запросов. Параметры запроса сортируются по алфавиту, конкатенируются, к строке добавляется MD5 от access_token + application_secret_key, затем MD5 от всей строки. Без правильной подписи — ошибка PARAM_SIGNATURE_INVALID.
sig = MD5( sorted_params_string + MD5(access_token + application_secret_key) )
Эта логика — на серверной стороне. Мобильный клиент передаёт access_token на backend, backend делает подписанные запросы к OK API.
Метод для профиля: users.getCurrentUser с полями name,pic_3,email. Email в ОК — необязательное поле, пользователь мог не указывать.
Серверная верификация токена: users.getLoggedInUser?access_token={token} — возвращает uid пользователя если токен валиден.
Сроки: 3-6 рабочих дней. Нестандартная подпись API немного усложняет серверную часть по сравнению с классическими OAuth2 провайдерами.







