Connecting TikTok to Social Quack — the complete guide
TikTok is the one platform where connecting takes a form and a short screen recording instead of two clicks. This page gets you through it in about 20 minutes, with every answer ready to paste. You only do this once.
Rather skip TikTok's review? Connect through Zernio instead: paste one key, sign in, post — a few minutes, no form. See the Zernio guide. This page is the do-it-yourself route with your own developer app.
Two phases, and you can start posting after phase 1:
| Phase | What you get | Time |
|---|---|---|
| 1. Create the app | Connect your account and post — but posts are private (only you can see them) until TikTok reviews the app | ~10 min |
| 2. Submit for review | Public posting | ~10 min of your time, then 1–5 business days on TikTok's side |
Phase 1 — create your TikTok developer app
- Go to https://developers.tiktok.com and log in with your TikTok account. (You may be asked to verify your email and accept the developer terms.)
- Manage apps → Connect an app. Fill in:
- App name: anything, e.g.
My Social Quack - App icon: any 1024×1024 image (your logo or a photo)
- Category: Productivity (or the closest match)
- Description: paste the one from the copy-paste answers below
- Terms of Service URL:
https://socialquack.com/terms· Privacy Policy URL:https://socialquack.com/privacy - Platform: tick Desktop
- App name: anything, e.g.
- Add products (left sidebar): add Login Kit and Content Posting API.
- In Content Posting API, switch on Direct Post.
- Login Kit → Redirect URI: tick Desktop and paste the redirect URI exactly as shown in Social Quack (Channels → TikTok → Set up keys ▾ → Set up app keys — it looks like
http://localhost:4400/oauth/tiktok/callback). Save.Why Desktop and not Web? Social Quack runs on your own computer. TikTok's Desktop platform allows
localhostredirects and doesn't require you to verify a domain. Web would. - Scopes: make sure these three are listed under your products:
user.info.basic,video.upload,video.publish. - Create a Sandbox — this is the step everyone misses. Until TikTok has reviewed your app, its main ("production") client key is rejected with
unauthorized_client. On your app's page click Sandbox (top right) → Create sandbox. Give it the same products (Login Kit, Content Posting API with Direct Post), the same scopes and the same Redirect URI, and under Target users add your own TikTok username. - Sandbox → Client key / Client secret: copy both into Social Quack (Channels → TikTok → Set up keys ▾ → Set up app keys) and click Connect. Approve the TikTok login page. Your account appears under Connected.
- Use a throwaway TikTok account for testing. Sandbox apps can only post to private accounts (
unaudited_client_can_only_post_to_private_accountsotherwise) — and you don't want to flip your real account private. Create a fresh TikTok account (any email), set it to Private (Profile → ☰ → Settings and privacy → Privacy → Private account), add its username under the sandbox's Target users, and connect that account in Social Quack. - Post a test video from Compose. When you tick the TikTok channel, a TikTok options panel appears — choose who can see the post (only "Only you" is offered in sandbox), the comment/duet/stitch switches, and whether it's commercial content. It publishes to the throwaway account. That's phase 1 done.
After review is approved: go back to Edit keys ▾ → Edit app keys, paste the app's production Client key/secret (from App details, not the sandbox), and click Connect — this time with your real account. From then on the privacy selector offers Everyone / Friends / Followers / Only you.
Photo posts need one extra step: TikTok fetches photos from a public URL, so configure Media hosting in Social Quack Settings, then in your TikTok app open Content Posting API → URL properties and verify that domain. Videos don't need this.
Phase 2 — submit for review (lifts the private-only limit)
In the developer portal open your app → Submit for review. TikTok asks three things: an explanation of each product and scope, a demo video, and the app's basics. Everything you need is below.
Copy-paste answers
App description
Personal social-media scheduling tool. I write posts on my own computer (Social Quack, a self-hosted scheduler that runs locally on my Mac/PC) and it publishes them to my own TikTok account at the scheduled time. Single user: me. No data about other TikTok users is collected or stored; nothing runs on a server.
Explain how each product and scope works within your app
Login Kit — used once to sign in with my own TikTok account so the app can obtain an access token for that account. The token is stored encrypted on my computer only.
Content Posting API (Direct Post) — used to publish videos and photo posts that I create and schedule myself. The app uploads the video file directly (FILE_UPLOAD) at the scheduled time with the caption I wrote, using the privacy level I chose.
user.info.basic — reads my own display name, avatar and username to show which account is connected in the app.
video.upload — uploads the video file to TikTok for a post I scheduled.
video.publish — publishes that upload as a post on my own account, with my caption and privacy setting.
Data handling: the app is local-only software. Access tokens are stored encrypted on my device, never transmitted to any third-party server, and are deleted when I disconnect the account. No content or data from other users is accessed.
If asked "Does your app allow users to post publicly?" → Yes — the user chooses the privacy level (public, friends, or private) for each post, matching what they'd pick in the TikTok app.
If asked about a website / how users access the app → Desktop application installed on the user's computer; the website is https://socialquack.com.
The demo video — what to record
TikTok wants to see the flow, not a marketing video. A 60–90 second screen recording is perfect. Mac: QuickTime → File → New Screen Recording, or ⌘⇧5. No voice-over needed; captions are a nice touch but optional.
Script (follow it in order — reviewers look for these exact beats):
- (0:00) Open Social Quack. Show the Channels page briefly.
- (0:05) Click Connect on TikTok. The TikTok login page opens in your browser — show the permission screen listing the scopes (user info, upload, publish) and click Authorize. Show that it returns to Social Quack with your TikTok account now listed under Connected.
- (0:25) Go to Compose. Type a caption, click Upload and attach a short video, tick the TikTok channel. Linger on the TikTok options panel that appears — reviewers check for it: the "Posting to TikTok as …" line, open the Who can see this post dropdown and pick a value, show the Allow comments / Duet / Stitch switches, flick Disclose commercial content on and off to reveal Your brand / Branded content, and let the "By posting, you agree to TikTok's Music Usage Confirmation" line be visible. Then pick a time a minute or two ahead (or click Post now).
- (0:45) Show the post in the Queue with status scheduled, then wait for it (or after Post now) to flip to published. Click the view link.
- (1:00) Show the post on TikTok itself — the web profile or your phone screen — so the reviewer sees the caption and video landed on the account.
- (1:15, optional but strong) Go to Channels → Remove the TikTok channel, showing that disconnecting revokes the app's access.
Keep the whole thing in one take; edits aren't needed. Save as MP4 and upload it in the review form's demo-video field.
After you submit
- Typical turnaround: 1–5 business days. You get an email either way.
- If rejected, the reason is usually one of: the demo video didn't show the permission screen, didn't show the post appearing on TikTok, or the scope explanation didn't mention what each scope is for. Fix that one thing and resubmit — same day is fine.
- Meanwhile keep using the app: private posts work throughout.
- Once approved, nothing changes in Social Quack — your next post simply uses the privacy level you chose.
Troubleshooting
| You see | It means | Do this |
|---|---|---|
unauthorized_client / client_key on the TikTok login page |
You used the production keys before review | Create a Sandbox, add yourself as target user, use the sandbox client key/secret |
redirect_uri error on the TikTok login page |
The URI in Login Kit doesn't match exactly | Copy it from Social Quack's TikTok card again, including the port; make sure Desktop is ticked |
unaudited_client_can_only_post_to_private_accounts |
Sandbox app + the connected account is public | Connect a throwaway account that is set to Private (step 8) |
| "TikTok: choose who can see this post" | The privacy level wasn't picked in the TikTok options panel | Tick the TikTok channel in Compose and choose an audience |
Post fails with privacy_level_option_mismatch |
App not yet reviewed, so only private is allowed | Expected before review — the post is private; submit for review to lift it |
Post fails with unaudited_client_can_only_post_to_private_accounts |
Same as above | Same |
| "TikTok session fully expired" | You haven't posted in a year; the refresh token lapsed | Channels → Remove → Connect again |
| Photo post fails, video works | Media domain not verified | Content Posting API → URL properties → verify your media host domain |