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
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.
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.
Login Kit va redirect URI qo'shing
Products → Add products → Login Kit. Redirect URI qoidalari:
httpsbilan boshlanadigan absolyut manzil, statik, query parametr va#siz; ko'pi bilan 10 ta, har biri 512 belgidan kam; so'rovdagiredirect_uriro'yxatdagisiga aynan mos kelishi shart.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.publishscope'iga tasdiq olgan va foydalanuvchi uni bergan bo'lishi kerak.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.
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 URLhttpsbo'lishi, boshqa manzilga yo'naltirmasligi va yuklab olish davomida (vazifa boshlangandan bir soatgacha) ochiq turishi kerak. Aks holda APIurl_ownership_unverified(403) qaytaradi. Faylni o'zingiz yuklasangiz (FILE_UPLOAD) domen tasdig'i kerak emas.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.
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.
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
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.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.publishso'raladi. “Saqlash va tekshirish” — Socialift TikTok token endpoint'idan client access token so'rab kalitni tekshiradi.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.
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_ONLYbilan sinang.
Qaysi scope nima uchun kerak?
| Scope | Nimaga ruxsat beradi | SDK'da |
|---|---|---|
user.info.basic | Profil: open id, avatar, ko'rinadigan ism | tt.me |
user.info.profile | profile_web_link, profile_deep_link, bio_description, is_verified | tt.me |
user.info.stats | Like, obunachi, obuna va videolar soni | tt.me |
video.list | Foydalanuvchining ochiq videolarini o'qish | tt.videos, tt.video, tt.iter_videos |
video.upload | Kontentni ijodkorga qoralama sifatida yuborish (u TikTok'da tahrirlab e'lon qiladi) | tt.upload_video |
video.publish | Kontentni to'g'ridan-to'g'ri profilga e'lon qilish | tt.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.
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_infochaqirilmagan yokiprivacy_levelu qaytargan ro'yxatda yo'q.PULL_FROM_URLtasdiqlanmagan 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-urlencodedkerak. - 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.