Быстрый старт с 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 → /newbot | A: Telegram-бот |
| Meta App ID и App Secret | developers.facebook.com → создать приложение | B: Facebook и Instagram |
| Instagram Business или Creator, привязанный к странице Facebook | Настройки приложения Instagram | B: Instagram |
Шаг 1: установить SDK и настроить ключ
Установите пакет
pip install socialift. Базовые зависимости — толькоaiohttpиcryptography. Если нужен живой аккаунт Telegram (TelegramAccount, MTProto):pip install 'socialift[telegram]'— добавится Telethon; для Telegram-бота это не требуется.Получите лицензионный ключ
socialift.uz/dashboard → «Tokenlar» (токены) → «Yangi token» (новый токен). Ключ начинается с
slk_; скопируйте его кнопками «Kalitni ko'rsatish» (показать ключ) и «Nusxa» (копировать). Первый месяц бесплатно, и в это время открыты все возможности SDK.Запишите ключ в переменную окружения
SOCIALIFT_LICENSE_KEY=slk_.... Не храните ключ в коде — клиенты сами читают его из окружения. Ключ проверяется не при импорте, а перед первым запросом.В контейнере задайте имя окружения
В Docker или Kubernetes задайте стабильное значение вроде
SOCIALIFT_INSTANCE_ID=my-app-prod— иначе каждый деплой займёт новый seat. Подробно — на странице «Аутентификация».
В терминале: установка и ключ
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 из этого сообщения.
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 идут с токеном страницы.
Создайте Meta-приложение
Создайте приложение на developers.facebook.com и запишите App ID и App Secret в
FACEBOOK_APP_IDиFACEBOOK_APP_SECRET. Подробно — в руководстве «Настройка Meta-приложения».Зарегистрируйте Redirect URI
Добавьте адрес callback в настройки Facebook Login (например,
https://example.uz/auth/facebook/callback). Вlogin_url()иexchange_code()нужно передать ровно этот адрес, символ в символ.Запросите разрешения
Чтобы прочитать страницы и привязанный Instagram, нужны
pages_show_listиinstagram_basic. При конфигурации Facebook Login for Business вместоscopesпередаётсяconfig_id.Отправьте пользователя на вход
fb.login_url(...)возвращает ссылку. Сохранитеstateв сессии и сравните в callback — SDK его не хранит.В callback получите токен и страницы
exchange_code()меняет код на долгоживущий токен пользователя, аpages()возвращает страницы с токеном страницы и ID привязанного Instagram.
Ссылка для входа
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
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 — сохраните их в базе в зашифрованном виде.