Перейти к содержимому
Socialift
Разделы документации
Быстрый старт

Быстрый старт с Socialift SDK

Socialift — асинхронный Python SDK для Instagram, Facebook, LinkedIn, TikTok и Telegram. Для старта нужны Python 3.11+, pip install socialift и лицензионный ключ slk_... из раздела «Tokenlar» (токены) в кабинете. Запишите ключ в SOCIALIFT_LICENSE_KEY и сделайте первый запрос: Telegram-боту хватит токена от BotFather, для Facebook и Instagram токен получают через OAuth.

Обновлено:

Коротко: как начать работу с Socialift SDK?

Четыре шага: (1) pip install socialift; (2) socialift.uz/dashboard → «Tokenlar» (токены) → «Yangi token» (новый токен), затем «Kalitni ko'rsatish» (показать ключ); (3) записать ключ в переменную окружения SOCIALIFT_LICENSE_KEY; (4) первый вызов. Самый быстрый путь — Telegram-бот: только токен BotFather, get_me() и send_message(). Для Facebook и Instagram нужны Meta-приложение и OAuth: login_url() → exchange_code() → pages() → Instagram.via_facebook().

До написания кода методы можно попробовать в Playground кабинета — см. раздел ниже.

Что понадобится для старта?

Что понадобится для старта? — Таблица возможностей по платформам
ЧтоГде получитьДля какого пути
Python 3.11 или новееpython.org или пакетный менеджер системыВсе
Лицензионный ключ slk_...Кабинет → «Tokenlar» (токены) → «Yangi token» (новый токен)Все
Токен бота@BotFather в Telegram → /newbotA: Telegram-бот
Meta App ID и App Secretdevelopers.facebook.com → создать приложениеB: Facebook и Instagram
Instagram Business или Creator, привязанный к странице FacebookНастройки приложения InstagramB: Instagram

Шаг 1: установить SDK и настроить ключ

  1. Установите пакет

    pip install socialift. Базовые зависимости — только aiohttp и cryptography. Если нужен живой аккаунт Telegram (TelegramAccount, MTProto): pip install 'socialift[telegram]' — добавится Telethon; для Telegram-бота это не требуется.

  2. Получите лицензионный ключ

    socialift.uz/dashboard → «Tokenlar» (токены) → «Yangi token» (новый токен). Ключ начинается с slk_; скопируйте его кнопками «Kalitni ko'rsatish» (показать ключ) и «Nusxa» (копировать). Первый месяц бесплатно, и в это время открыты все возможности SDK.

  3. Запишите ключ в переменную окружения

    SOCIALIFT_LICENSE_KEY=slk_.... Не храните ключ в коде — клиенты сами читают его из окружения. Ключ проверяется не при импорте, а перед первым запросом.

  4. В контейнере задайте имя окружения

    В Docker или Kubernetes задайте стабильное значение вроде SOCIALIFT_INSTANCE_ID=my-app-prod — иначе каждый деплой займёт новый seat. Подробно — на странице «Аутентификация».

В терминале: установка и ключ

terminal
python -m pip install socialift
python -m pip install "socialift[telegram]"   # только для TelegramAccount (MTProto)

export SOCIALIFT_LICENSE_KEY="slk_..."
# Windows PowerShell: $env:SOCIALIFT_LICENSE_KEY="slk_..."

python -c 'import socialift; print(socialift.__version__)'

Последняя команда выводит установленную версию. Лицензия здесь ещё не проверяется — это происходит перед первым запросом к API.

Путь A: Telegram-бот — первое сообщение за пару минут

Создайте бота командой /newbot в @BotFather, запишите токен в TELEGRAM_BOT_TOKEN и напишите боту любое сообщение в Telegram — скрипт возьмёт chat ID из этого сообщения.

bot.py
import asyncio
from socialift import Telegram


async def main():
    async with Telegram.from_env() as bot:        # читает TELEGRAM_BOT_TOKEN
        me = await bot.get_me()
        print("Бот:", me["username"])

        updates = await bot.get_updates(timeout=0)
        messages = [u["message"] for u in updates if "message" in u]
        if not messages:
            print("Сначала напишите боту в Telegram")
            return
        chat_id = messages[-1]["chat"]["id"]
        await bot.send_message(chat_id, "Привет! Socialift SDK работает.")


asyncio.run(main())

get_me() — самый дешёвый способ проверить токен: при невалидном токене придёт наследник ApiError (обычно AuthError).

Если у бота установлен webhook, get_updates() не работает — Telegram отдаёт обновления либо через webhook, либо через polling.

Чтобы писать в канал, передайте "@имя_канала" вместо chat_id; бот должен быть администратором канала.

Путь B: Facebook и Instagram через OAuth

Если аккаунт Instagram Business или Creator привязан к странице Facebook, токен получают через Facebook Login, а запросы к Instagram идут с токеном страницы.

  1. Создайте Meta-приложение

    Создайте приложение на developers.facebook.com и запишите App ID и App Secret в FACEBOOK_APP_ID и FACEBOOK_APP_SECRET. Подробно — в руководстве «Настройка Meta-приложения».

  2. Зарегистрируйте Redirect URI

    Добавьте адрес callback в настройки Facebook Login (например, https://example.uz/auth/facebook/callback). В login_url() и exchange_code() нужно передать ровно этот адрес, символ в символ.

  3. Запросите разрешения

    Чтобы прочитать страницы и привязанный Instagram, нужны pages_show_list и instagram_basic. При конфигурации Facebook Login for Business вместо scopes передаётся config_id.

  4. Отправьте пользователя на вход

    fb.login_url(...) возвращает ссылку. Сохраните state в сессии и сравните в callback — SDK его не хранит.

  5. В callback получите токен и страницы

    exchange_code() меняет код на долгоживущий токен пользователя, а pages() возвращает страницы с токеном страницы и ID привязанного Instagram.

Ссылка для входа

login.py
import secrets
from socialift import Facebook

REDIRECT_URI = "https://example.uz/auth/facebook/callback"

fb = Facebook.from_env()              # FACEBOOK_APP_ID, FACEBOOK_APP_SECRET
state = secrets.token_urlsafe(32)     # сохраните в сессии
url = fb.login_url(
    redirect_uri=REDIRECT_URI,
    state=state,
    scopes=["pages_show_list", "instagram_basic"],
)
print(url)

login_url() — синхронный метод без сетевых запросов, поэтому await не нужен.

Callback: токен, страницы и профиль Instagram

callback.py
import asyncio
import os
from socialift import Facebook, Instagram

REDIRECT_URI = "https://example.uz/auth/facebook/callback"


async def handle_callback(code: str):
    async with Facebook.from_env() as fb:
        user = await fb.exchange_code(code, redirect_uri=REDIRECT_URI)
        pages = await fb.pages(user.access_token)

    async with Instagram.via_facebook(app_secret=os.environ["FACEBOOK_APP_SECRET"]) as ig:
        for page in pages:
            if not page.instagram_id:
                continue
            profile = await ig.profile(page.access_token, ig_user_id=page.instagram_id)
            posts = await ig.media(page.access_token, ig_user_id=page.instagram_id, limit=5)
            print(page.name, "->", profile.username, len(posts), "постов")


asyncio.run(handle_callback(code="параметр code из callback URL"))

По документации Meta долгоживущий токен пользователя обычно действует около 60 дней; полученный из него токен страницы не имеет фиксированного срока, но в определённых случаях может быть аннулирован.

SDK ничего не хранит: сохраняйте user.access_token и page.access_token в базе в зашифрованном виде и не пишите их в логи. appsecret_proof добавляется к каждому запросу Meta автоматически.

Если Instagram нужно подключить без страницы Facebook — Instagram(app_id=..., app_secret=...) и Instagram Login; см. руководство «Настройка Instagram Login».

Проверить без кода: Playground

Playground в кабинете показывает 191 методов с документацией, формой параметров и примерами на Python SDK, cURL и JavaScript. Порядок: подключите аккаунт или бота в разделе «Ulanishlar» (подключения), затем выберите метод в Playground и нажмите «Yuborish» (отправить).

Запросы настоящие: пост публикуется, сообщение уходит. Удаление и действия, влияющие на рекламный бюджет, перед отправкой требуют отдельного подтверждения.

Аккаунты, подключённые в кабинете, в SDK не передаются: в своём приложении токен получают через OAuth, как показано выше, и хранят в своей базе.

Что дальше: перед выходом в продакшен

  • В контейнерах задайте стабильный SOCIALIFT_INSTANCE_ID — страница «Аутентификация».
  • Обрабатывайте AuthError, PermissionError и RateLimitError по отдельности — страница «Ошибки».
  • Проверяйте подпись вебхука по сырому телу — страница «Вебхуки».
  • Следите за сроком токенов: TokenBundle.expires_at и is_expiring().
  • Все методы и параметры — в разделах SDK reference.

Частые вопросы

С какими версиями Python работает Socialift SDK?

С Python 3.11 и новее. SDK полностью асинхронный (на aiohttp): методы вызываются через await, а в обычном скрипте используется asyncio.run(main()). В FastAPI, фоновых задачах или скрипте — работает одинаково везде, где есть asyncio.

Работает ли SDK без лицензионного ключа?

Клиенты, которые отправляют запросы к платформам, — нет: если ключ не найден, перед первым запросом возникает LicenseRequired. Ключ проверяется не при импорте и не при создании клиента, а именно перед первым запросом. Первый месяц бесплатный — ключ берётся в разделе «Tokenlar» (токены).

Нужно ли Meta-приложение или другой developer app для Telegram-бота?

Нет. Для Telegram Bot API достаточно токена от @BotFather: Telegram(token=...) или Telegram.from_env(). api_id и api_hash нужны только для живого аккаунта Telegram (TelegramAccount, MTProto).

Можно ли подключить Instagram без страницы Facebook?

Да, для профессионального аккаунта (Business или Creator) через Instagram Login: Instagram(app_id=..., app_secret=...), затем login_url() и exchange_code(). Поток через страницу использует Instagram.via_facebook(app_secret=...) и токен страницы.

Хранит ли SDK токены сам?

Нет. Пакет ничего не сохраняет: токены, сессии и база — задача вашего приложения. В TokenBundle, который возвращает exchange_code(), есть access_token, expires_in и expires_at — сохраните их в базе в зашифрованном виде.

Источники

  1. Telegram Bot API
  2. Meta: Instagram API with Facebook Login — Get started
  3. Meta: Long-lived access tokens

Связанные страницы