Skip to main content

Add your description here

Project description

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 Просмотр ченжлога и актуальных версий приложений

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itd_oauth_sdk-0.1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itd_oauth_sdk-0.1.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file itd_oauth_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: itd_oauth_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for itd_oauth_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 93eb0a29416a590da473467437f9cb0bc21ea601dd7117ae71d19edf52beaaab
MD5 03b42e439eebcd652c581c37cb9a41d9
BLAKE2b-256 e8f129eae429ac3039b26c6e21b585a1b6164312d084072cfba5c15cb17ec96c

See more details on using hashes here.

File details

Details for the file itd_oauth_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: itd_oauth_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for itd_oauth_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9790ab34a8a4ddc861e612ca7c75c8e15c098361383f15cce5d995be35ba4f00
MD5 d0e8ca6f5c879de025f6da26e361a4be
BLAKE2b-256 9d8824e7db6b71e201ea5903fee904621560bcbd8ed4777802dcd593f8542f80

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page