Socialift SDK bilan tez boshlash
Socialift — Instagram, Facebook, LinkedIn, TikTok va Telegram uchun asinxron Python SDK. Boshlash uchun Python 3.11+, pip install socialift va kabinetning «Tokenlar» bo'limidagi slk_... litsenziya kaliti kerak. Kalitni SOCIALIFT_LICENSE_KEY ga yozing va birinchi so'rovni yuboring: Telegram bot uchun BotFather tokeni yetadi, Facebook va Instagram uchun token OAuth orqali olinadi.
Yangilangan:
Qisqacha: Socialift SDK bilan qanday boshlanadi?
To'rt qadam: (1) pip install socialift; (2) socialift.uz/dashboard → «Tokenlar» → «Yangi token», keyin «Kalitni ko'rsatish»; (3) kalitni SOCIALIFT_LICENSE_KEY muhit o'zgaruvchisiga yozish; (4) birinchi chaqiruv. Eng tez yo'l — Telegram bot: faqat BotFather tokeni bilan get_me() va send_message(). Facebook va Instagram uchun Meta app va OAuth kerak: login_url() → exchange_code() → pages() → Instagram.via_facebook().
Kod yozishdan oldin metodlarni kabinetdagi Playground'da ham sinab ko'rish mumkin — pastdagi bo'limga qarang.
Boshlash uchun nima kerak?
| Nima | Qayerdan olinadi | Qaysi yo'l uchun |
|---|---|---|
| Python 3.11 yoki yangiroq | python.org yoki tizim paket menejeri | Hammasi |
Litsenziya kaliti slk_... | Kabinet → «Tokenlar» → «Yangi token» | Hammasi |
| Bot tokeni | Telegram'da @BotFather → /newbot | A: Telegram bot |
| Meta App ID va App Secret | developers.facebook.com → app yaratish | B: Facebook va Instagram |
| Facebook Page'ga ulangan Instagram Business yoki Creator akkaunti | Instagram ilovasi sozlamalari | B: Instagram |
1-qadam: SDK'ni o'rnatish va kalitni sozlash
Paketni o'rnating
pip install socialift. Asosiy bog'liqliklar faqataiohttpvacryptography. Jonli Telegram akkaunti (TelegramAccount, MTProto) kerak bo'lsa:pip install 'socialift[telegram]'— Telethon qo'shiladi; Telegram bot uchun bu shart emas.Litsenziya kalitini oling
socialift.uz/dashboard → «Tokenlar» → «Yangi token». Kalit
slk_bilan boshlanadi; uni «Kalitni ko'rsatish» va «Nusxa» tugmalari bilan oling. Birinchi oy bepul va bu davrda SDK'ning barcha imkoniyatlari ochiq.Kalitni muhit o'zgaruvchisiga yozing
SOCIALIFT_LICENSE_KEY=slk_.... Kalitni kodga yozmang — klientlar uni muhitdan o'zi o'qiydi. Kalit import paytida emas, birinchi so'rovdan oldin tekshiriladi.Konteynerda muhit nomini bering
Docker yoki Kubernetes'da
SOCIALIFT_INSTANCE_ID=my-app-prodkabi barqaror qiymat qo'ying — aks holda har deploy yangi seat egallaydi. Batafsil — «Autentifikatsiya» sahifasida.
Terminalda: o'rnatish va kalit
python -m pip install socialift
python -m pip install "socialift[telegram]" # faqat TelegramAccount (MTProto) uchun
export SOCIALIFT_LICENSE_KEY="slk_..."
# Windows PowerShell: $env:SOCIALIFT_LICENSE_KEY="slk_..."
python -c 'import socialift; print(socialift.__version__)'Oxirgi buyruq o'rnatilgan versiyani chiqaradi. Litsenziya bu yerda hali tekshirilmaydi — u birinchi API so'rovidan oldin tekshiriladi.
A yo'l: Telegram bot — bir necha daqiqada birinchi xabar
@BotFather'da /newbot bilan bot yarating, tokenni TELEGRAM_BOT_TOKEN ga yozing va botga Telegram'da istalgan xabar yuboring — skript chat ID ni shu xabardan oladi.
import asyncio
from socialift import Telegram
async def main():
async with Telegram.from_env() as bot: # TELEGRAM_BOT_TOKEN dan o'qiydi
me = await bot.get_me()
print("Bot:", me["username"])
updates = await bot.get_updates(timeout=0)
messages = [u["message"] for u in updates if "message" in u]
if not messages:
print("Avval botga Telegram'da xabar yozing")
return
chat_id = messages[-1]["chat"]["id"]
await bot.send_message(chat_id, "Salom! Socialift SDK ishlayapti.")
asyncio.run(main())get_me() — tokenni tekshirishning eng arzon yo'li: token yaroqsiz bo'lsa ApiError vorisi (odatda AuthError) keladi.
Botga webhook o'rnatilgan bo'lsa get_updates() ishlamaydi — Telegram yangilanishlarni yo webhook, yo polling orqali beradi.
Kanalga yozish uchun chat_id o'rniga "@kanal_nomi" bering; bot kanalda admin bo'lishi kerak.
B yo'l: Facebook va Instagram — OAuth orqali
Instagram Business yoki Creator akkaunti Facebook Page'ga ulangan bo'lsa, token Facebook Login orqali olinadi va Instagram so'rovlari page token bilan yuboriladi.
Meta app yarating
developers.facebook.com'da app yarating, App ID va App Secret'ni
FACEBOOK_APP_IDvaFACEBOOK_APP_SECRETga yozing. Batafsil — «Meta app sozlash» qo'llanmasida.Redirect URI'ni ro'yxatga oling
Facebook Login sozlamalariga callback manzilingizni qo'shing (masalan
https://example.uz/auth/facebook/callback).login_url()vaexchange_code()ga aynan shu manzil belgi-ma-belgi berilishi shart.Ruxsatlarni so'rang
Page'lar va ularga ulangan Instagram akkauntini o'qish uchun
pages_show_listvainstagram_basickerak. Facebook Login for Business konfiguratsiyasi ishlatilsa,scopeso'rnigaconfig_idberiladi.Foydalanuvchini login oynasiga yuboring
fb.login_url(...)havola qaytaradi.stateni sessiyada saqlang va callback'da solishtiring — SDK uni saqlamaydi.Callback'da token va Page'larni oling
exchange_code()kodni uzoq muddatli user tokenga almashtiradi,pages()esa Page'larni page tokeni va ulangan Instagram ID si bilan qaytaradi.
Login havolasini yaratish
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) # sessiyada saqlang
url = fb.login_url(
redirect_uri=REDIRECT_URI,
state=state,
scopes=["pages_show_list", "instagram_basic"],
)
print(url)login_url() sinxron metod va tarmoqqa chiqmaydi — shuning uchun await kerak emas.
Callback: token, Page'lar va Instagram profili
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), "ta post")
asyncio.run(handle_callback(code="callback URL'dagi code parametri"))Meta hujjatiga ko'ra uzoq muddatli user token odatda taxminan 60 kun amal qiladi; undan olingan page tokenning belgilangan tugash sanasi yo'q, lekin u ma'lum hollarda bekor qilinishi mumkin.
SDK hech narsa saqlamaydi: user.access_token va page.access_token ni bazaga shifrlab yozing, log'ga chiqarmang. Har bir Meta so'roviga appsecret_proof avtomatik qo'shiladi.
Instagram akkauntni Page'siz ulash kerak bo'lsa — Instagram(app_id=..., app_secret=...) va Instagram Login; «Instagram Login sozlash» qo'llanmasiga qarang.
Kod yozmasdan sinash: Playground
Kabinetdagi Playground 191 metodni hujjati, parametr formasi va Python SDK, cURL hamda JavaScript namunasi bilan ko'rsatadi. Tartib: «Ulanishlar» bo'limida akkaunt yoki botni ulang, keyin Playground'da metodni tanlang va «Yuborish» ni bosing.
So'rovlar haqiqiy: post e'lon qilinadi, xabar yuboriladi. O'chirish va reklama byudjetiga ta'sir qiladigan amallar yuborishdan oldin alohida tasdiq so'raydi.
Kabinetda ulangan akkauntlar SDK'ga o'tmaydi: o'z ilovangizda token yuqoridagidek OAuth orqali olinadi va sizning bazangizda saqlanadi.
Keyingi qadamlar: ishlab chiqarishdan oldin
- Konteynerlarda
SOCIALIFT_INSTANCE_IDni barqaror qiymatga qo'ying — «Autentifikatsiya» sahifasi. AuthError,PermissionErrorvaRateLimitErrorni alohida ishlang — «Xatolar» sahifasi.- Webhook imzosini xom tana bo'yicha tekshiring — «Webhook'lar» sahifasi.
- Token muddatini kuzating:
TokenBundle.expires_atvais_expiring(). - Barcha metodlar va parametrlar — SDK reference sahifalarida.
Ko'p so'raladigan savollar
Socialift SDK qaysi Python versiyalarida ishlaydi?
Python 3.11 va undan yangi versiyalarda. SDK to'liq asinxron (aiohttp asosida): metodlar await bilan chaqiriladi, oddiy skriptda esa asyncio.run(main()) ishlatiladi. FastAPI, fon vazifalari yoki skript — asyncio bor joyda bir xil ishlaydi.
Litsenziya kalitisiz SDK ishlaydimi?
Platformaga so'rov yuboradigan klientlar ishlamaydi: kalit topilmasa birinchi so'rovdan oldin LicenseRequired xatosi chiqadi. Kalit import yoki klient yaratish paytida emas, aynan birinchi so'rovda tekshiriladi. Birinchi oy bepul — kalitni kabinetdagi «Tokenlar» bo'limidan olasiz.
Telegram bot uchun Meta yoki boshqa developer app kerakmi?
Yo'q. Telegram Bot API uchun @BotFather bergan token yetarli: Telegram(token=...) yoki Telegram.from_env(). api_id va api_hash faqat jonli Telegram akkaunti (TelegramAccount, MTProto) uchun kerak.
Instagram'ni Facebook Page'siz ulash mumkinmi?
Ha, professional (Business yoki Creator) akkaunt uchun Instagram Login bilan: Instagram(app_id=..., app_secret=...), keyin login_url() va exchange_code(). Page orqali oqim esa Instagram.via_facebook(app_secret=...) va page token bilan ishlaydi.
SDK tokenlarni o'zi saqlaydimi?
Yo'q. Paket hech narsa saqlamaydi: token, sessiya va baza — sizning ilovangiz ishi. exchange_code() qaytargan TokenBundle da access_token, expires_in va expires_at bor — ularni shifrlab bazaga yozing.