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)
| File | Size | Uploaded | |
|---|---|---|---|
| itd_oauth_sdk-0.1.0.tar.gz | 6.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|