WORKSECTION

OAuth 2.0

Как работает OAuth 2.0

Worksection API дополнительно использует для авторизации протокол OAuth 2.0. Протокол платформы авторизации OAuth 2.0 описан в https://​datatracker​.ietf​.org/​d​o​c​/​h​t​m​l​/​r​f​c6749 .

Мы поддерживаем поток кода авторизации согласно стандарту OAuth.
Порядок авторизации OAuth 2.0:



Полезные материалы:
  1. Библиотека SDK для упрощения работы с нашим API
  2. Библиотека OAuth 2.0 для удобной работы с Worksection OAuth 2.0
  3. Коллекции методов в Postman.

Эта статья была вам полезна? Да, спасибо! Нет

Начальные настройки OAuth 2.0

Для настройки авторизации нажмите на аватарку, зайдите в настройки акаунта, раздел API


Для использования авторизации OAuth 2.0 вам необходимо зарегистрировать и настроить приложение Worksection API. У каждого приложения есть свой уникальный client id и client secret, которые будут использованы в потоке OAuth.

Окно настройки любого приложения: 



Эта статья была вам полезна? Да, спасибо! Нет

Код авторизации OAuth 2.0

Чтобы начать процесс авторизации, пользователь должен нажать на ссылку в вашем приложении, которое направит его на URL:

https://worksection.com/oauth2/authorize
URL-адрес авторизации должен содержать обязательные параметры:

ПАРАМЕТР
ОПИСАНИЕ
client_id
client_id, полученный при создании приложения.
response_type
Настройка ответа, возврат кода авторизации. Всегда указываем значение code.
redirect_uri
URI, когда будет перенаправлен ответ. URI должен соответствовать требованиям стандарта OAuth2 и использовать протокол HTTPS.
state
Случайная текстовая строка, которая будет включена в ответ вашему приложении в конце потока OAuth. Основная цель - предотвращение подделки запросов CSRF.
scope
Разрешениям OAuth помогают вам точно настроить, к каким данным в Worksection ваше приложение будет иметь доступ. Этот параметр передается в виде строчек, разделенных пробелом или запятой. Список доступных областей видимости: projects_read, projects_write, tasks_read, tasks_write, costs_read, costs_write, tags_read, tags_write, comments_read, comments_write, files_read, files_write, users_read, users_write, contacts_read, contacts_write, administrative.
Эта статья была вам полезна? Да, спасибо! Нет

Обработка кода авторизации OAuth 2.0

После перехода по URL-адресу авторизации на первом этапе пользователь перенаправляется на страницу входа в Worksection, если он еще не выполнил вход: 



или же на страницу выбора пользователя, если он уже был авторизирован: 



После успешной авторизации пользователь перенаправляется на страницу подтверждения доступа:



Если пользователь предоставил доступ на странице подтверждения, он будет перенаправлен на redirect_​uri с параметром code.
Обратите внимание, что код авторизации действителен на протяжении 10 минут.

Эта статья была вам полезна? Да, спасибо! Нет

Токен доступа OAuth 2.0

Данные для доступа можно получить путем исполнения POST-запроса на URL-адрес токена с кодом авторизации:


https://worksection.com/oauth2/token

POST-запрос должен содержать обязательные параметры:


ПАРАМЕТР
ОПИС
client_id
client_id, полученный при создании приложения.
client_secret
client_secret, полученный при создании приложения.
grant_type
Всегда указываем значения authorization_code.
code
Код авторизации, который вы получили на предыдушем шаге.
redirect_uri
URI, куда будет перенаправлен ответ. URI должен соответствовать требованиям стандарта OAuth2 и использовать протокол HTTPS.

Пример CURL: 


curl -X POST -d "client_id=<client_id>&client_secret=<client_secret>&grant_type=authorization_code&code=<authorization_code>&redirect_uri=<redirect_uri>"
https://worksection.com/oauth2/token 

Пример ответа:


{
    "token_type": "Bearer",
    "expires_in": 86400,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJh...",
    "refresh_token": "def502005534a202e9e8effa05cdbad564015604f34...", "account_url": "https://authorizeduseraccount.worksection.com"
}

Полученные access_token и refresh_token будем использовать в следующих запросах для доступа к API и обновления access_token. Срок действия access_token - 24 часа, срок действия refresh_token - 1 месяц.

Эта статья была вам полезна? Да, спасибо! Нет

Использование токена доступа OAuth 2.0

Каждый запрос к API через OAuth2 протокол должен выполняться по HTTPS с токеном доступа, который должен быть передан в header авторизации или же в параметре access_token. Для всех запросов вы должны использовать базовый URL:

https://youraccount.worksection.com/api/oauth2
Например использование API-метода get_tasks для получения задач определенного проекта:

curl -X GET -H "Authorization: Bearer <token_value>"
https://youraccount.worksection.com/api/oauth2?action=get_tasks&id_project=193
Вы получите ответ, похожий на:

{
    "status": "ok",
    "data": [
        {
            "name": "T0",
            "page": "/project/193/13036/",
            "status": null,
            "priority": "1",
            "user_from": "Marcus Wright",
            "user_to": "Marcus Wright",
            "from_me": 0,
            "to_me": 0,
            "date_added": "2023-03-10 16:41",
            "date_start": "2023-03-15",
            "date_end": "2023-03-23",
            "child": [
                {
                    "name": "T0.1",
                    "page": "/project/193/13036/13037/",
                    "status": null,
                    "priority": "1",
                    "user_from": "Marcus Wright",
                    "user_to": "Marcus Wright",
                    "from_me": 0,
                    "to_me": 0,
                    "date_added": "2023-03-10 16:41"
                }
            ]
        }
]
}
Каждый токен доступа действителен на протяжении 24-х часов. Далеe необходимо обновить его с помощью refresh_token или получить новый.

Эта статья была вам полезна? Да, спасибо! Нет

Обновление токена доступа OAuth 2.0

После того, как токен доступа станет недействительным, его необходимо обновить. Вы можете сделать это, использовав refresh_token (который был получен в методе /oauth2/token) и отправив POST-запрос на URL:

https://worksection.com/oauth2/refresh
POST-запрос должен содержать обязательные параметры:


ПАРАМЕТР
ОПИСАНИЕ
client_id
client_id, полученный при создании приложения.
client_secret
client_secret, полученный при создании приложения.
grant_type
Всегда указываем значение refresh_token.
refresh_token
Токен обновления, который был получен в методе /oauth2/token.


Пример CURL:

curl -X POST -d
"client_id=<client_id>&client_secret=<client_secret>&grant_type=refresh_token&refresh_token=<refresh_token>"
https://worksection.com/oauth2/refresh
Пример ответа:

{
    "token_type": "Bearer",
    "expires_in": 86400,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1...",
    "refresh_token": "def50200365724c970b6cea5eeecfed28...", "account_url": "https://authorizeduseraccount.worksection.com"
}
Запрос обновления возвращает новые токен доступа и токен обновления, что сделает старые токены недействительными.

Эта статья была вам полезна? Да, спасибо! Нет

Получение информации о пользователе OAuth 2.0

Вы можете также использовать access_token для получения дополнительной информации о пользователе, при необходимости. Нужно отправить POST-запрос на URL:

https://worksection.com/oauth2/resource
POST-запрос должен содержать обязательные параметры:

ПАРАМЕТР
ОПИСАНИЕ
client_id
client_id, полученный при создании приложения.
client_secret
client_secret, полученный при создании приложения.
access_token
Токен доступа, который был получен в методе /oauth2/token.


Пример CURL:

curl -X POST -d
"client_id=<client_id>&client_secret=<client_secret>access_token=<access_token>"
https://worksection.com/oauth2/resource
Пример ответа:

{
    "id": "11",
    "first_name": "Valdemaar",
    "last_name": "Pupkoff",
    "email": "[email protected]", "account_url": "https://authorizeduseraccount.worksection.com"
}

Эта статья была вам полезна? Да, спасибо! Нет
Вторжение России в Украину Worksection прекратил работу на территории РФ Почему?
esc
или
Распечатать