Asosiy mazmunga o'tish
Socialift
Hujjatlar bo'limlari
Tez boshlash

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?

Boshlash uchun nima kerak? — Platformalar bo'yicha imkoniyatlar jadvali
NimaQayerdan olinadiQaysi yo'l uchun
Python 3.11 yoki yangiroqpython.org yoki tizim paket menejeriHammasi
Litsenziya kaliti slk_...Kabinet → «Tokenlar» → «Yangi token»Hammasi
Bot tokeniTelegram'da @BotFather → /newbotA: Telegram bot
Meta App ID va App Secretdevelopers.facebook.com → app yaratishB: Facebook va Instagram
Facebook Page'ga ulangan Instagram Business yoki Creator akkauntiInstagram ilovasi sozlamalariB: Instagram

1-qadam: SDK'ni o'rnatish va kalitni sozlash

  1. Paketni o'rnating

    pip install socialift. Asosiy bog'liqliklar faqat aiohttp va cryptography. Jonli Telegram akkaunti (TelegramAccount, MTProto) kerak bo'lsa: pip install 'socialift[telegram]' — Telethon qo'shiladi; Telegram bot uchun bu shart emas.

  2. 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.

  3. 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.

  4. Konteynerda muhit nomini bering

    Docker yoki Kubernetes'da SOCIALIFT_INSTANCE_ID=my-app-prod kabi barqaror qiymat qo'ying — aks holda har deploy yangi seat egallaydi. Batafsil — «Autentifikatsiya» sahifasida.

Terminalda: o'rnatish va kalit

terminal
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.

bot.py
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.

  1. Meta app yarating

    developers.facebook.com'da app yarating, App ID va App Secret'ni FACEBOOK_APP_ID va FACEBOOK_APP_SECRET ga yozing. Batafsil — «Meta app sozlash» qo'llanmasida.

  2. Redirect URI'ni ro'yxatga oling

    Facebook Login sozlamalariga callback manzilingizni qo'shing (masalan https://example.uz/auth/facebook/callback). login_url() va exchange_code() ga aynan shu manzil belgi-ma-belgi berilishi shart.

  3. Ruxsatlarni so'rang

    Page'lar va ularga ulangan Instagram akkauntini o'qish uchun pages_show_list va instagram_basic kerak. Facebook Login for Business konfiguratsiyasi ishlatilsa, scopes o'rniga config_id beriladi.

  4. Foydalanuvchini login oynasiga yuboring

    fb.login_url(...) havola qaytaradi. state ni sessiyada saqlang va callback'da solishtiring — SDK uni saqlamaydi.

  5. 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

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)     # 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

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), "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_ID ni barqaror qiymatga qo'ying — «Autentifikatsiya» sahifasi.
  • AuthError, PermissionError va RateLimitError ni alohida ishlang — «Xatolar» sahifasi.
  • Webhook imzosini xom tana bo'yicha tekshiring — «Webhook'lar» sahifasi.
  • Token muddatini kuzating: TokenBundle.expires_at va is_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.

Manbalar

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

Bog'liq sahifalar