8.3 KiB
Threads 官方 API 申請與連線指南
這份是給「使用者」看的操作手冊。照著做,就能把你的(多個)Threads 人設帳號接上官方 API,用來更穩定地發文、回覆留言、同步成效、關鍵字海巡。
⚠️ 官方 API 是選用的。不想申請也可以只用「瀏覽器登入(session)」模式運作,只是發文/海巡走無頭瀏覽器,較容易因改版或風控中斷。
0. 先搞懂一件事:一個 App,多個帳號
這是最多人搞錯的地方,先講清楚:
- 你只需要建立「一個」Meta App(一組 App ID + App Secret),不是每個人設各建一個。
- App ID / App Secret 在本工具裡是全部帳號共用,只要在「連線設定」填一次。
- 但每一個 Threads 人設帳號,都要各自「授權」一次,每次授權會換到「那個帳號專屬的 access token」。
- 一把 token 只能操作它對應的那一個帳號,不能用同一把 token 發到不同帳號。
換句話說:建 App / 申請權限 = 做一次;接帳號 = 每個人設各做一次。
┌─────────────────────────────┐
│ 一個 Meta App(共用) │
│ App ID + App Secret │
└──────────────┬──────────────┘
│ 每個帳號各自 OAuth 授權一次
┌──────────┬───────┼───────┬──────────┐
人設A 人設B 人設C 人設D 人設E
(token A) (token B)(token C)(token D) (token E)
1. 申請流程總覽
- 建立 Meta 開發者帳號
- 建立一個 App,加入「Access the Threads API」用途
- 取得 App ID 與 App Secret
- 設定 OAuth Redirect URI(要跟本工具一致)
- (測試階段)把你的每個人設帳號加為 Threads Tester
- 在本工具「連線設定」填入 App ID / Secret
- 在「帳號策略」頁,對每個人設各按一次「連線」完成授權
- (要給非測試者帳號用、或要開 keyword search)才需要送 App Review
2. 詳細步驟
Step 1 — 建立 Meta 開發者帳號
- 前往 https://developers.facebook.com/ 用你的 Facebook 帳號登入。
- 第一次會要你完成「開發者註冊」(驗證手機 / Email)。
Step 2 — 建立 App
- 進入 https://developers.facebook.com/apps/ → 點「建立應用程式 / Create App」。
- 用途(Use case)選擇 「存取 Threads API / Access the Threads API」。
- 找不到的話,選「Other」→ App 類型選「Business」,建立後再到 Products 加入 Threads。
- 填 App 名稱(給自己看的,例如
巡樓)、聯絡 Email,建立。
Step 3 — 取得 App ID 與 App Secret
- 進入這個 App 的後台。
- 左側 App settings → Basic(基本資料)。
- 這頁就有:
- App ID(Threads App ID)
- App Secret(點「Show」要再輸入密碼才看得到)
- 先複製下來,等下要貼進本工具。
⚠️ App Secret 等同密碼,不要外流、不要 commit 進 git。
Step 4 — 設定 OAuth Redirect URI(最容易出錯)
-
左側找到 Threads / Threads API → Settings(設定)。
-
找到 Redirect Callback URLs / OAuth Redirect URI 欄位。
-
填入本工具的 callback 網址,結尾必須完全一致:
{你的網址}/api/threads/oauth/callback- 本機開發:
http://localhost:3000/api/threads/oauth/callback - 有對外網域時:
https://你的網域/api/threads/oauth/callback
- 本機開發:
本工具的「連線設定」頁會直接顯示目前該填的 Redirect URI,照抄最保險。
如果之後要在本機用 API 發「含圖片」的貼文,圖片需要一個 Meta 能存取的公開網址,這時要把
APP_URL設成像 ngrok 的公開網址,Redirect URI 也要跟著改成那個網域。
Step 5 —(測試階段)把每個人設加為 Threads Tester
App 在還沒通過 App Review 之前是「開發模式」,只有被加為測試者的帳號才能授權。所以你的 5 個人設都要加進來:
- 左側 App roles → Roles(角色),或 Threads API 設定頁的測試者區塊。
- 找到 Threads Testers,點「Add People / 新增」。
- 輸入該人設的 Threads 使用者名稱(@username),送出邀請。
- 重點:用那個人設帳號登入 Threads / Instagram,到 https://www.threads.net/settings/account(或設定 → 帳號 → 網站權限 / Invites)接受測試者邀請。
- 5 個人設各做一次。
沒接受邀請的帳號,授權時會出現「權限不足 / invalid_scope / 無法授權」之類的錯誤。
Step 6 — 在本工具填入 App ID / Secret(做一次)
- 開本工具 → 左側 連線設定。
- 在「官方 API」區塊填入 Meta App ID 與 Meta App Secret。
- 確認頁面顯示的 OAuth Redirect URI 已經填回 Step 4 的 Meta 後台。
也可以改用環境變數(見最後一節),填了環境變數就不必在 UI 重填。
Step 7 — 每個人設各自連一次(重複 N 次)
- 在左下角帳號切換器選到要連的人設(例如「人設 A」)。
- 到 帳號策略 頁,找到「連線狀態」卡片。
- 按「官方 API → 連線」,會跳轉到 Meta 授權頁,登入/確認後跳回。
- 卡片變成「已授權連線」就完成了。
- 切到下一個人設,重複 2–4,直到 5 個都連好。
系統會自動把每個 token 綁到「當下選中的帳號」,彼此不會互相覆蓋。
Step 8 —(選用)送 App Review
只有在以下情況才需要:
- 想讓非測試者的帳號也能授權(例如要給別人用)。
- 想開啟 關鍵字海巡(keyword search):
threads_keyword_search屬於進階權限,需要審核。
審核通常需要準備:
- 一段 螢幕錄影:完整示範 OAuth 登入 → 發文 / 使用該權限的流程。
- 隱私權政策網址。
- 資料刪除說明網址 / 回呼。
- 對每個申請權限說明用途。
- 審核大約 3–5 個工作天。
本工具預設會要求這些 scope:
threads_basic、threads_content_publish、threads_read_replies、threads_manage_replies、threads_manage_insights、threads_keyword_search。
測試階段只用測試者帳號就能跑前五個;threads_keyword_search 通常要過審才會生效。
3. 連好之後,哪些功能會用官方 API?
到「連線設定」可以分開開關:
| 開關 | 影響 |
|---|---|
| 用官方 API 發布 | 開啟後,發布走 API(較穩、可同步 media id);沒連線或關閉時自動退回瀏覽器發文。 |
| 用官方 API 找靈感 | 用 keyword_search 海巡(需要該權限過審)。 |
| 成效同步 / 回覆 | 連線後即可用 API 抓自己貼文成效、回覆留言。 |
所有動作都以「目前選中的帳號」的 token 進行;換帳號前記得先在左下角切換。
4. 常見錯誤排查
| 現象 | 可能原因 / 解法 |
|---|---|
授權跳回後顯示 redirect_uri 不符 |
Meta 後台的 Redirect URI 沒和本工具完全一致(注意 http/https、結尾、有無斜線)。 |
no_active_account |
還沒建立或選定帳號。先到帳號策略建立人設並切到它,再連線。 |
| 授權頁說權限不足 / 無法授權 | 該人設沒被加為 Threads Tester,或沒接受邀請(Step 5)。 |
| 找靈感(API)沒結果或報錯 | threads_keyword_search 尚未過審;先關掉「用官方 API 找靈感」,改用瀏覽器海巡。 |
| 含圖貼文 API 發布失敗 | 圖片需公開網址;設定 APP_URL 為對外網域(如 ngrok),或先發純文字。 |
| token 過期 | 系統會在快到期時自動刷新長效 token;若失敗就到該帳號重新「連線」一次。 |
5. 用環境變數設定(可選)
不想在 UI 填 App ID/Secret,可在 .env 設定(UI 仍可覆蓋):
THREADS_APP_ID=你的_App_ID
THREADS_APP_SECRET=你的_App_Secret
# 對外網址(影響 OAuth Redirect URI 與含圖發布)
APP_URL=http://localhost:3000
Token 不放環境變數——它是每個帳號各自的,授權後存在本機資料庫的對應帳號上。