Процесс авторизации в одноклассниках через oAuth
Все что связано с электроникой, от mp3 плееров и фотомыльниц до серверов и программирования.
Модератор: womanlife
Сообщений: 1
• Страница 1 из 1
Сообщений: 1
• Страница 1 из 1
Вернуться в «Мой компьютер • гаджеты • электроника»
Перейти
- Гостевой раздел
- ↳ ХЭЛП!!! У меня проблемы с регистрацией.
- ↳ Родительские проблемы
- ↳ Красота и здоровье
- ↳ Общие темы
- Между нами девочками
- ↳ Наш ребёнок
- ↳ Планирование беременности и роды
- ↳ Наши детки с 0 до 1 года
- ↳ Наши детки с 1 года до 3 лет
- ↳ Наши детки с 3 до 7 лет
- ↳ Наши детки с 7 до 12 лет
- ↳ особые детки
- ↳ Общие темы
- ↳ Домашнее хозяйство
- ↳ Семейные отношения
- ↳ Кулинария
- ↳ Мой компьютер • гаджеты • электроника
- ↳ Учебник HTML для чайников на пальцах (из переписки по аське)
- ↳ Дача
- ↳ Авто
- ↳ Красота
- ↳ Здоровье
- ↳ Диеты
- ↳ Шопинг
- ↳ Животные и растения
- ↳ Клубы по интересам
- ↳ хвасталка - болталка
- ↳ Праздники
- ↳ Файловый архив
- ↳ Для детей
- ↳ фильмы
- ↳ мультфильмы
- ↳ разное
- ↳ чтиво (книги, журналы, раскраски)
- ↳ Аудио (песни, сказки, колыбельные)
- ↳ учебные пособия (все что связано с учебным процессом)
- ↳ Для взрослых
- ↳ Стол заказов
- ↳ Путешествия / Командировки
- Жёлтые страницы
- ↳ Медицина
- ↳ Муниципальные органы
- ↳ Органы охраны и правопорядка
- ↳ Законы
- ↳ Жилищный кодекс Российской Федерации
- ↳ Полезности
- ↳ Школа №358
- ↳ ЭМПЛ
- ↳ Подробности про дневники и дом. задания
- ↳ пример школьных дневников
- ↳ школа №
- ↳ Класс
- ↳ Предмет
- ↳ Оптовые закупки
- Разное
- ↳ мини софт на заказ
- ↳ Курилка
- ↳ Игры и конкурсы
- ↳ Музыка
- ↳ Кино
- ↳ Юмор
- ↳ Наша работа
- ↳ Дружим районами и городами
- ↳ Районы Питера
- ↳ Районы Питера
- ↳ Адмиралтейский
- ↳ Василеостровский
- ↳ Выборгский
- ↳ Калининский
- ↳ Кировский
- ↳ Колпинский
- ↳ Красногвардейский
- ↳ Красносельский
- ↳ Кронштадтский
- ↳ Курортный
- ↳ Московский
- ↳ Невский
- ↳ Петроградский
- ↳ Петродворцовый
- ↳ Приморский
- ↳ Пушкинский
- ↳ Фрунзенский
- ↳ Центральный
- ↳ Лен. область
- ↳ г. Москва и Моск. обл.
- ↳ Остальные города
- ↳ Разговоры про всё что неподпадает под тематику остальных форумов
- О форуме
- ↳ Наш форум
- ↳ Правила форума и FAQ
- ↳ Новости и объявленя Администрации
- ↳ Книга жалоб и предложений
- ↳ Вопросы новичков и гостей
- ↳ Нам интерестно ваше мнение
- ↳ Заявки на модераторов
Кто сейчас на конференции
Сейчас этот форум просматривают: бот и 0 гостей
Процесс авторизации в одноклассниках через oAuth
foxss
08.14.2017 4:30
https://connect.ok.ru/oauth/authorize?client_id={clientId}&scope={scope}&response_type={{response_type}}&redirect_uri={redirectUri}&layout={layout}&state={state}
2. возвращаемся на
{redirect_uri}?code={code}&state={state}
Полученный параметр code действителен в течение 2 минут.
3. отправляем POST-запрос
https://api.ok.ru/oauth/token.do?code={code}&client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&grant_type={grant_type}
4. получаем токены
{
"access_token": "{access_token}",
"token_type": "session",
"refresh_token": "{refresh_token}",
"expires_in":"{expires_in}"
}
====================== получ данных =====================
sig = MD5(application_key={app key} + MD5(access_token + application_secret_key))
https://api.ok.ru/fb.do?application_key={app key}&fields={}&method=users.getCurrentUser&sig={$sig}
Для начала процесса авторизации нужно осуществить переход URL:
https://connect.ok.ru/oauth/authorize?client_id={clientId}&scope={scope}&response_type={{response_type}}&redirect_uri={redirectUri}&layout={layout}&state={state}
Название Обязательный Описание
client_id Да Идентификатор приложения {application id}
scope Да Запрашиваемые права приложения, разделённые
символом ‘;’. См. права приложения
response_type Да Тип ответа от сервера, укажите code
redirect_uri Да URI, на который будет передан access_token.
URI должен посимвольно совпадать с одним из URI, зарегистрированных в настройках приложения.
Часть URI после символа ‘?’ (query) не учитывается при проверке, тем не менее, для передачи динамически изменяющихся данных рекомендуется использовать параметр state.
layout Нет Внешний вид окна авторизации:
* w – (по умолчанию) стандартное окно для полной версии сайта;
* m – окно для мобильной авторизации;
* a – упрощённое окно для мобильной авторизации без шапки.
state Нет Параметр состояния. В неизменном виде
пробрасывается в redirect_uri. Позволяет передавать произвольные данные между разными фазами OAuth и защищаться от xsrf.
2. Разрешение прав доступа
Если пользователь ранее выдал приложению все права, указанные в параметре scope, то окно автоматически закрывается и дополнительное подтверждение от пользователя не требуется.
После перехода по сформированному URL пользователь будет должен ввести свой логин и пароль, если ранее он этого не сделал. После входа на сайт ему будет предложено авторизовать приложение и подтвердить запрошенные права:
Показ прав
3. Получение code
После подтверждения авторизации пользователь будет перенаправлен на указанный при открытии диалога авторизации redirect_uri, в GET-параметрах которого будет передан ключ доступа code, а также state в случае, если он был указан на этапе 1:
{redirect_uri}?code={code}&state={state}
Полученный параметр code действителен в течение 2 минут.
В случае ошибки или отказа от авторизации будет передан параметр error, идентифицирующий причину проблемы:
{redirect_uri}#error={error}&state={state}
4. Получение access_token
Для получения access_token необходимо совершить POST-запрос с сервера вашего сайта к API на URL:
https://api.ok.ru/oauth/token.do?code={code}&client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&grant_type={grant_type}
Название Описание
code Код авторизации, полученный в пункте 3
client_id Идентификатор приложения {application id}
client_secret Секретный ключ приложения {application_secret_key}
redirect_uri Тот же URI переадресации, что был указан в пункте 1
grant_type Тип выдаваемых прав, укажите authorization_code
В ответе от сервера приходит json, содержащий запрошенный access_token или информацию об ошибке.
Вид ответа в случае успеха:
{
"access_token": "{access_token}",
"token_type": "session",
"refresh_token": "{refresh_token}",
"expires_in":"{expires_in}"
}
access_token – токен доступа, используемый для формирования запроса к API;
token_type – на данный момент возвращается только session;
refresh_token – токен обновления, который можно использовать в дальнейшем для упрощённой процедуры авторизации. Действителен в течение 30 суток, не возвращается в случае использования токена с удлинённым сроком жизни (используя право LONG_ACCESS_TOKEN);
expires_in – время действия токена доступа в секундах.
Вид ответа в случае ошибки
{
"error": "{error}",
"error_description": "{error_description}"
}
error – код ошибки;
error_description – описание ошибки.
5. Использование refresh_token
Имея токен обновления refresh_token, можно получить access_token по упрощённой процедуре, сделав один POST-запрос на URL:
https://api.ok.ru/oauth/token.do?refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}&grant_type={grant_type}
Название Описание
refresh_token Маркер обновления, полученный ранее в пункте 4
client_id Идентификатор приложения {application id}
client_secret Секретный ключ приложения {application_secret_key}
grant_type Тип выдаваемых прав, укажите refresh_token
Формат ответа аналогичен получению access_token, но без refresh_token.
Возможные ошибки
Ошибка Варианты возникновения
invalid_request * был передан неверный code
(описание ошибки - Invalid code)
* время действия code истекло
(описание ошибки - Expired code)
* redirect_uri отличается от переданного на этапе OAuth
(описание ошибки - Wrong redirect_uri)
invalid_client * не удалось найти указанное приложение
(описание ошибки - Unknown client)
unauthorized_client * секретный ключ приложения неверен
(описание ошибки - Invalid request parameters)
access_denied * пользователь не авторизовал приложение
(например, удалил его в настройках, описание ошибки - Access denied)
* время действия refesh_token истекло
(описание ошибки - Refresh token expired)
* пользователь принудительно вышел со всех устройств
(см. настройки, описание ошибки - Logout all)
invalid_grant * не удалось распознать параметр grant_type
(описание ошибки - Invalid grant type или Invalid parameters for grant type)
invalid_token * не удалось определить пользователя
(описание ошибки - Session expired)
* refresh_token был передан неверно
(описание ошибки - Invalid refresh token / Invalid refresh token structure / Invalid refresh token, user not found)
Каждый метод доступен по 2 URL:
{api_server}fb.do?method=[method_name] - например, https://api.ok.ru/fb.do?method=friends.get
{api_server}api/[method_group]/[method_name] - например, https://api.ok.ru/api/friends/get
В качестве {api_server} должен использоваться соответствующий GET-параметр. Если он отсутствует, то используется https://api.ok.ru/
Расчет подписи запроса
- при отсутствии значения session_secret_key:
для вызова без сессии считаем session_secret_key = application_secret_key;
для вызова в сессии session_secret_key = MD5(access_token + application_secret_key), переводим значение в нижний регистр;
- убираем из списка параметров session_key/access_token при наличии;
- параметры сортируются лексикографически по ключам;
- параметры соединяются в формате ключ=значение;
- sig = MD5(значения_параметров + session_secret_key);
- значение sig переводится в нижний регистр.
Общие параметры запроса
Имя Требуется Тип Описание
application_key Да String Публичный ключ приложения
sig Да String Подпись запроса