TikTok Content Posting API: แอปยังไม่ผ่าน audit ทำอะไรได้ และเคสโดนปฏิเสธเพราะเว็บเปิดไม่ได้
ถ้าอยากให้ระบบของเราโพสต์คลิปลง TikTok ได้เอง ต้องใช้ Content Posting API และต้องผ่านการตรวจแอปของ TikTok ก่อน แอปแรกของผมโดนปฏิเสธด้วยเหตุผลที่ไม่เกี่ยวกับโค้ดเลย: เว็บไซต์ที่กรอกไว้เปิดไม่ได้ บทความนี้สรุปว่าแอปที่ยังไม่ผ่าน audit ทำอะไรได้แค่ไหน และต้องเตรียมอะไรก่อนยื่น
ด่านมีสองชั้น อย่าสับสน
- App review ตอนสร้างแอป — TikTok ตรวจข้อมูลแอป (เว็บไซต์ นโยบาย ไอคอน คลิปสาธิต) ก่อนให้เปิดใช้ product อย่าง Login Kit และ Content Posting API
- Audit ของ Content Posting API — ตรวจว่าใช้งานตามข้อกำหนด เพื่อปลดข้อจำกัดของแอปที่ยังไม่ผ่าน audit
แอปที่ยังไม่ผ่าน audit ทำอะไรได้
- โพสต์ได้เฉพาะแบบ
SELF_ONLY(เห็นแค่เจ้าของบัญชี) - โพสต์ผ่านแอปได้ไม่เกิน 5 บัญชีในช่วง 24 ชั่วโมง
- บัญชีที่โพสต์ต้องตั้งเป็นส่วนตัว (private) ตอนโพสต์
ข้อจำกัดนี้พอสำหรับทดสอบว่าโค้ดทำงานครบลูป (ล็อกอิน → อัปโหลด → เห็นคลิปส่วนตัวในแอป TikTok)
แต่ใช้ขายบริการโพสต์ให้ลูกค้าจริงไม่ได้ ให้ตั้งค่าตั้งต้นในโค้ดเป็น SELF_ONLY
ไว้ก่อน ไม่อย่างนั้นจะเจอ error ทุกครั้งที่ลองโพสต์แบบสาธารณะ
หลังผ่าน audit ก็ยังมีเพดานจำนวนครีเอเตอร์ต่อวันตามที่ประเมินไว้ในฟอร์ม และเพดานจำนวนโพสต์ต่อบัญชีต่อวัน (ตามเอกสารราว 15 โพสต์ต่อวัน รวมทุกแอป)
เคสจริง: โดนปฏิเสธเพราะเว็บตาย
ตอนกรอกข้อมูลแอป ผมใส่ Website URL, Privacy Policy, Terms of Service และ Redirect URI ชี้ไปที่เว็บทดลองบนโฮสต์ฟรี ซึ่งต่อมาถูกลบไป ทุก URL จึงตอบ 404 แอปโดนปฏิเสธด้วยเหตุผลข้อเดียวคือเปิดเว็บไม่ได้ ทั้งที่ส่วนอื่นผ่านหมด
สิ่งที่แก้:
- สร้างหน้าแนะนำแอป, หน้า privacy และหน้า terms บนโดเมนที่ใช้งานจริงและดูแลอยู่
- เปลี่ยน URL ทั้ง 4 ช่องในพอร์ทัลให้ชี้หน้าใหม่
- เช็คว่าโดเมนในคลิปสาธิตตรงกับโดเมนที่กรอก
- เปิดทุก URL จากเครื่องอื่นให้แน่ใจว่าได้ 200 ก่อนกดยื่นใหม่
เช็คลิสต์ก่อนยื่น
- Website, Privacy Policy, Terms of Service เปิดได้จริงบนโดเมนของเรา
- ยืนยันความเป็นเจ้าของโดเมนในพอร์ทัล (ถ้าจะใช้การดึงวิดีโอจาก URL ต้องยืนยันโดเมนนั้นด้วย ไม่อย่างนั้นใช้วิธีอัปโหลดไฟล์ตรงแทน)
- Redirect URI ตรงกับที่โค้ดใช้ทุกตัวอักษร
- ขอ scope เท่าที่ใช้: โพสต์คลิป (
video.publishและ/หรือvideo.upload) และuser.info.basicสำหรับแสดงชื่อบัญชีที่เชื่อมไว้ - คลิปสาธิตแสดงครบ: ล็อกอิน TikTok → เลือกคลิป → ใส่แคปชั่น → โพสต์ → เห็นผลในแอป TikTok
- เขียนอธิบายว่าผู้ใช้โพสต์คลิปของตัวเองลงบัญชีของตัวเอง และเลือกคลิปกับแคปชั่นเองทุกครั้งก่อนโพสต์
เรื่อง secret
Client Secret ต้องอยู่ในไฟล์ .env หรือตัวแปรสภาพแวดล้อมเท่านั้น และใส่ .env ใน
.gitignore ถ้า secret เคยถูกวางในแชทหรือที่อื่น ให้กดรีเซ็ตในพอร์ทัลแล้วใช้ค่าใหม่
ทางเลือกถ้ายังไม่อยากยื่น audit
เครื่องมือตั้งเวลาโพสต์แบบเสียเงินบางเจ้าผ่านการอนุมัติของแพลตฟอร์มไว้แล้ว ใช้ผ่านบริการคลาวด์ของเขาได้เลย แต่ถ้าเป็นแบบ self-host ส่วนใหญ่ยังต้องใช้แอปของเราเอง (ดู Postiz self-host)