Skip to main content

ITD-OAuth-SDK

SDK для авторизации через ИТД OAuth для серверов.

Установка

uv add itd-oauth-sdk

Документация

Client

client = Client(
    client_id='ID клиента',
    client_secret='Секрет'
)

Получить свой токен можно на официальном портале (если сайт не работает, можно обратиться в ЛС канала @itdStatus). Также можно использовать тестовые токены.

Получение ссылки на авторизацию

url = client.get_authorization_url(
    scopes=['posts', 'users'],
    redirect_uri='localhost:1000'
)

scope - разрешения (требовать разрешение на комментирование, список постов и тд). redirect_uri устанавливается только если у вас тестовый client_id (на него перешлет pop up).

Обмен кода

res = client.exchange_code('123456789')
access_token = res['access_token']
refresh_token = res['refresh_token']
access_token_expires_in = res['expires_in']

Код приходит в каллбэке (/auth/callback?code=xxx).

Обновить access_token

res = client.refresh_token(refresh_token)
access_token = res['token']
access_token_expires_in = res['expires_in']

Прокси

res = client.proxy(
    access_token,
    'get',
    'posts',
    data=None,
    files=None,
    headers=None,
    json=None,
    params={'limit': 20},
    timeout=15
)

Отправить запрос через Oauth proxy. Есть практически все параметры из requests.request().

Прокси с авто-рефрешем

res = client.proxy_with_refresh(
    refresh_token,
    'get',
    'posts',
    data=None,
    files=None,
    headers=None,
    json=None,
    params={'limit': 20},
    timeout=15,
    access_token=access_token
)

Тоже самое, что и client.proxy(), только с функцией обновления токена (вызовет client.refresh_token если истек).

FastAPI роутер

from fastapi import FastAPI

app = FastAPI()
app.include_router(client.get_router(
    prefix='/api/auth'
))

Добавляет эндпоинт POST /api/auth (или указанный в prefix), который принимает code и отдает token, а также записывает itd_oauth_refresh в куки.

Требуется установка FastAPI:

uv add itd-oauth-sdk[fastapi]

FastAPI зависимость

from fastapi import Depends

@app.get('me')
def api_get_me(token: dict = Depends(client.dependency)):
    return token  # {"sid":"08d7ef36-5914-45d5-95b2-f349d401fa48","clientId":"itd-oauth-dev","scope":["posts"],"sub":"587167e9-25ad-4948-afc0-2ee5bc9097ea","iat":1781596719,"exp":1781597919}

Добавляет данные пользователя (расшифрованный access_token) в контекст роута.

Интеграция с itd-sdk

from itd import ITDClient

ITDClient(config=client.sdk_config)

Изменяет целевой URL на OAuth прокси.

Требуется установка itd-sdk:

uv add itd-oauth-sdk[itd-sdk]

Scope

Scope определяет к каким данным и действиям получает доступ приложение.
Пользователь видит список запрошенных прав на странице подтверждения и может отклонить запрос.

Доступные варианты

Scope Разрешения
users Просомотр и изменение профиля, подписки, блокировки
posts Чтение, создание, изменение постов, лайки, репосты, комментарии
comments Создание, изменение и удаление комментариев, лайки
notifications Просмотр уведомлений
files Загрузка файлов
reports Отправка жалоб на контент
hashtags Получние списка хэштэгов, поиск и получение постов по хэштэгу
search Поиск пользователей и хэштэгов
subscription Просмотр статуса подписки
verification Просмотр статуса верификации аккаунта
platform Просмотр ченжлога и актуальных версий приложений

Metadata

Release files for itd-oauth-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for itd-oauth-sdk 0.1.0
File Size Uploaded
itd_oauth_sdk-0.1.0.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for itd-oauth-sdk 0.1.0
File Interpreter ABI Platform
itd_oauth_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.2 kB

Release files / itd_oauth_sdk-0.1.0.tar.gz

Download URL itd_oauth_sdk-0.1.0.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
93eb0a29416a590da473467437f9cb0bc21ea601dd7117ae71d19edf52beaaab
BLAKE2b-256 checksum
How to use checksums
e8f129eae429ac3039b26c6e21b585a1b6164312d084072cfba5c15cb17ec96c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / itd_oauth_sdk-0.1.0-py3-none-any.whl

Download URL itd_oauth_sdk-0.1.0-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9790ab34a8a4ddc861e612ca7c75c8e15c098361383f15cce5d995be35ba4f00
BLAKE2b-256 checksum
How to use checksums
9d8824e7db6b71e201ea5903fee904621560bcbd8ed4777802dcd593f8542f80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page