Asosiy mazmunga o'tish
Socialift
Hujjatlar bo'limlari
Sozlash

TikTok API uchun developer app sozlash

TikTok integratsiyasi uchun TikTok for Developers'da ikki mahsulotli app kerak: Login Kit (OAuth va redirect URI) va Direct Post yoqilgan Content Posting API. Client key va Client secret'ni olasiz, video.publish kabi scope'larni qo'shasiz, PULL_FROM_URL uchun domen yoki URL prefix'ni tasdiqlaysiz, sandbox'da sinaysiz va review'dan o'tasiz — audit'gacha postlar faqat private ko'rinishda chiqadi.

Yangilangan:

TikTok app nima beradi?

Ikki qiymat: Client key (app identifikatori, OAuth so'rovlarida client_key deb ketadi) va Client secret (maxfiy: kodni token'ga almashtirish va webhook imzosini tekshirish uchun). Foydalanuvchi access token'i 24 soat, refresh token 365 kun amal qiladi; yangilashda refresh token almashishi mumkin, shuning uchun har safar yangisini saqlang.

Token endpoint'i application/x-www-form-urlencoded formatini kutadi — JSON yuborilsa so'rov rad etiladi.

Scope'lar ikki guruhga bo'linadi: profil va videolar ro'yxati (user.info.*, video.list) hamda kontent e'lon qilish (video.upload, video.publish). user.info.basic dan boshqa scope'lar app konfiguratsiyasida oldindan tasdiqlanadi.

TikTok for Developers'da app yaratish va sozlash

  1. Ro'yxatdan o'ting va app yarating

    TikTok for Developers'ga kiring va app yarating. TikTok app'ni tashkilot (organization) nomidan ro'yxatdan o'tkazishni tavsiya qiladi; shaxsiy developer akkaunt haqiqiy integratsiya uchun tavsiya etilmaydi.

  2. App ma'lumotlarini to'ldiring

    Ikonka (1024×1024 px, JPEG/JPG/PNG, 5 MB gacha), nom, kategoriya, tavsif (avtorizatsiya sahifasida ko'rinadi), Terms of Service URL va Privacy Policy URL. 2024-yil 9-sentyabrdan keyin yaratilgan app'larda bu URL'lar tasdiqlanadi. Web platformasi uchun rasmiy sayt URL'i kerak.

  3. Login Kit va redirect URI qo'shing

    Products → Add products → Login Kit. Redirect URI qoidalari: https bilan boshlanadigan absolyut manzil, statik, query parametr va # siz; ko'pi bilan 10 ta, har biri 512 belgidan kam; so'rovdagi redirect_uri ro'yxatdagisiga aynan mos kelishi shart.

  4. Content Posting API qo'shing va Direct Post'ni yoqing

    Content Posting API mahsulotini qo'shing va uning sozlamalarida Direct Post konfiguratsiyasini yoqing. To'g'ridan-to'g'ri e'lon qilish uchun app video.publish scope'iga tasdiq olgan va foydalanuvchi uni bergan bo'lishi kerak.

  5. Scope'larni qo'shing

    Scopes bo'limida integratsiya haqiqatan ishlatadigan scope'larni qo'shing (pastdagi jadval). Credentials bo'limidan Client key va Client secret'ni ko'chiring.

  6. PULL_FROM_URL uchun URL egaligini tasdiqlang

    URL properties vidjetida Domain (masalan cdn.siz.uz — undagi barcha yo'llar) yoki URL prefix (https:// + host + yo'l + /) qo'shib tasdiqlang. Media URL https bo'lishi, boshqa manzilga yo'naltirmasligi va yuklab olish davomida (vazifa boshlangandan bir soatgacha) ochiq turishi kerak. Aks holda API url_ownership_unverified (403) qaytaradi. Faylni o'zingiz yuklasangiz (FILE_UPLOAD) domen tasdig'i kerak emas.

  7. Webhook callback URL'ni sozlang

    App sozlamalarida callback URL'ni kiriting (faqat HTTPS). Endpoint darhol 200 qaytarishi kerak: aks holda TikTok yetkazishni muvaffaqiyatsiz deb hisoblab, 72 soatgacha eksponensial kechikish bilan qayta yuboradi. Yetkazish “kamida bir marta” — takroriy hodisalarni filtrlang.

  8. Sandbox'da sinang

    Sandbox — review'ga yubormasdan integratsiyani sinash uchun cheklangan muhit. Unda test akkauntlar bilan login va e'lon oqimini to'liq o'tkazing — demo video ham shu yerda yoziladi.

  9. Demo video bilan review'ga yuboring

    Har bir mahsulot va scope app'da qanday ishlatilishini batafsil yozing. Kamida bitta demo video (5 tagacha, har biri 50 MB gacha): to'liq end-to-end oqim, interfeys va foydalanuvchi harakatlari; web app'da videodagi domen sayt URL'iga mos bo'lishi kerak. Sayt to'liq ishlaydigan bo'lsin, Terms of Service va Privacy Policy havolalari menyu ochmasdan ko'rinsin. Direct Post'dagi private cheklovini olib tashlash uchun Content Posting API audit'i alohida o'tiladi.

TikTok app'ni Socialift'ga ulash

  1. Kalitlar → TikTok app

    Kabinetda “Kalitlar” bo'limida “TikTok app” kartasini oching. “Konsolga ko'chiring” blokidagi Redirect URI'ni Login Kit sozlamasiga belgi-belgi ko'chiring — oxiridagi / ham farq qiladi.

  2. Client key va Client secret'ni kiriting

    “Scope'lar” ixtiyoriy: bo'sh qoldirilsa user.info.basic, user.info.profile, user.info.stats, video.list, video.upload, video.publish so'raladi. “Saqlash va tekshirish” — Socialift TikTok token endpoint'idan client access token so'rab kalitni tekshiradi.

  3. Webhook URL'ni ko'chiring

    Saqlangandan keyin kartada Webhook URL chiqadi — uni TikTok callback URL maydoniga qo'ying. Hodisalar sizning Client secret'ingiz bilan imzo bo'yicha tekshiriladi. Kartada “Webhook verify token” qatori ham ko'rinadi, lekin TikTok'da bunday maydon yo'q — uni e'tiborsiz qoldiring.

  4. Akkauntni ulang

    “Ulanishlar” bo'limida TikTok kartasidagi “Ulash” ni bosing. Access token 24 soat yashaydi — “Token'ni yangilash” uni refresh token bilan yangilaydi. Playground'da e'lon metodlarini SELF_ONLY bilan sinang.

Qaysi scope nima uchun kerak?

Qaysi scope nima uchun kerak? — Platformalar bo'yicha imkoniyatlar jadvali
ScopeNimaga ruxsat beradiSDK'da
user.info.basicProfil: open id, avatar, ko'rinadigan ismtt.me
user.info.profileprofile_web_link, profile_deep_link, bio_description, is_verifiedtt.me
user.info.statsLike, obunachi, obuna va videolar sonitt.me
video.listFoydalanuvchining ochiq videolarini o'qishtt.videos, tt.video, tt.iter_videos
video.uploadKontentni ijodkorga qoralama sifatida yuborish (u TikTok'da tahrirlab e'lon qiladi)tt.upload_video
video.publishKontentni to'g'ridan-to'g'ri profilga e'lon qilishtt.creator_info, tt.publish_video, tt.publish_photos

E'londan oldin creator_info chaqirilishi shart: privacy_level faqat u qaytargan privacy_level_options dan biri bo'lishi kerak, aks holda privacy_level_option_mismatch.

Python SDK'da TikTok kalitlari

TikTok.from_env() TIKTOK_CLIENT_KEY va TIKTOK_CLIENT_SECRET ni o'qiydi.

tiktok_post.py
import asyncio
import secrets

from socialift import TikTok

REDIRECT_URI = "https://siz.uz/auth/tiktok/callback"  # Login Kit'dagi bilan belgi-belgi bir xil


async def main() -> None:
    # TIKTOK_CLIENT_KEY, TIKTOK_CLIENT_SECRET, SOCIALIFT_LICENSE_KEY
    async with TikTok.from_env() as tt:
        print(tt.login_url(redirect_uri=REDIRECT_URI, state=secrets.token_urlsafe(32)))

        bundle = await tt.exchange_code(input("code: "), redirect_uri=REDIRECT_URI)
        info = await tt.creator_info(bundle.access_token)  # e'londan oldin majburiy
        print(info["privacy_level_options"])
        result = await tt.publish_video(bundle.access_token, video_url="https://cdn.siz.uz/reel.mp4",
                                        title="Salom TikTok!", privacy_level="SELF_ONLY", wait=True)
        print(result)


asyncio.run(main())

Aniq ko'rinishda: TikTok(client_key="...", client_secret="..."). video_url tasdiqlangan domendan bo'lishi kerak; faylni o'zingiz yuklash uchun video= ga baytlar yoki fayl yo'lini bering.

Webhook imzosini SDK'da socialift.webhooks.verify_tiktok_request(client_secret, body, headers) tekshiradi — body so'rovning xom baytlari bo'lishi shart.

Ko'p uchraydigan xatolar

  • Redirect URI Login Kit'dagidan farq qiladi: http, oxiridagi / yoki query parametr.
  • Audit'dan o'tmagan app'da ochiq post e'lon qilishga urinish — kontent private ko'rinishda cheklanadi, akkaunt ochiq bo'lsa unaudited_client_can_only_post_to_private_accounts.
  • creator_info chaqirilmagan yoki privacy_level u qaytargan ro'yxatda yo'q.
  • PULL_FROM_URL tasdiqlanmagan domendan yoki redirect qiladigan URL'dan — url_ownership_unverified.
  • Yangilashdan keyin eski refresh token saqlanib qolgan — keyingi urinish rad etiladi.
  • Token endpoint'iga JSON yuborilgan — application/x-www-form-urlencoded kerak.
  • Demo videodagi domen app'dagi sayt URL'iga mos emas yoki bir mahsulot videoda ko'rsatilmagan.
  • Webhook endpoint'i og'ir ishni bajarib, 200 ni kech qaytaradi — TikTok qayta yuboradi va dubllar paydo bo'ladi.

Ko'p so'raladigan savollar

TikTok client key va client secret qayerda?

TikTok for Developers'da app sahifasining Credentials bo'limida. Client key — Meta'dagi App ID'ning muqobili, lekin nomi boshqa. Socialift kabinetida ular “TikTok app” kartasidagi “Client key” va “Client secret” maydonlariga yoziladi.

Nega TikTok'ga yuborilgan video private bo'lib chiqyapti?

Audit'dan o'tmagan API klientlari yuborgan barcha kontent private ko'rinishda cheklanadi. Cheklovni olib tashlash uchun Content Posting API audit'idan o'tish kerak. Shuning uchun Socialift SDK'da privacy_level standart qiymati SELF_ONLY.

PULL_FROM_URL uchun domenni tasdiqlash shartmi?

Ha. Havola orqali yuklash uchun app'ga Domain yoki URL prefix property qo'shib, egaligini tasdiqlash kerak, aks holda url_ownership_unverified qaytadi. Faylni bo'laklab o'zingiz yuklasangiz (FILE_UPLOAD) bu talab yo'q.

TikTok access token qancha amal qiladi?

Access token 24 soat, refresh token 365 kun. Yangilashda qaytgan refresh token oldingisidan farq qilishi mumkin — har doim yangisini saqlang. Socialift kabinetida “Token'ni yangilash” tugmasi, SDK'da tt.refresh_token(...) bor.

App review uchun demo videoda nima ko'rsatiladi?

Integratsiya qilinadigan sayt yoki ilovadagi to'liq oqim: login, ruxsat berish va har bir tanlangan mahsulotning ishlashi, interfeys bilan. App hali tasdiqlanmagan bo'lsa, video sandbox muhitida yoziladi; web app'da videodagi domen sayt URL'iga mos bo'lishi kerak.

Manbalar

  1. TikTok: Register your app
  2. TikTok: Login Kit for Web
  3. TikTok: Content Posting API — Get started
  4. TikTok: Media transfer guide
  5. TikTok: App review guidelines
  6. TikTok: Webhooks overview

Bog'liq sahifalar