# 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. 申請流程總覽 1. 建立 Meta 開發者帳號 2. 建立一個 App,加入「Access the Threads API」用途 3. 取得 App ID 與 App Secret 4. 設定 OAuth Redirect URI(要跟本工具一致) 5. (測試階段)把你的每個人設帳號加為 **Threads Tester** 6. 在本工具「連線設定」填入 App ID / Secret 7. 在「帳號策略」頁,對每個人設各按一次「連線」完成授權 8. (要給非測試者帳號用、或要開 keyword search)才需要送 **App Review** --- ## 2. 詳細步驟 ### Step 1 — 建立 Meta 開發者帳號 1. 前往 用你的 Facebook 帳號登入。 2. 第一次會要你完成「開發者註冊」(驗證手機 / Email)。 ### Step 2 — 建立 App 1. 進入 → 點「**建立應用程式 / Create App**」。 2. 用途(Use case)選擇 **「存取 Threads API / Access the Threads API」**。 - 找不到的話,選「Other」→ App 類型選「Business」,建立後再到 Products 加入 Threads。 3. 填 App 名稱(給自己看的,例如 `巡樓`)、聯絡 Email,建立。 ### Step 3 — 取得 App ID 與 App Secret 1. 進入這個 App 的後台。 2. 左側 **App settings → Basic(基本資料)**。 3. 這頁就有: - **App ID**(Threads App ID) - **App Secret**(點「Show」要再輸入密碼才看得到) 4. 先複製下來,等下要貼進本工具。 > ⚠️ App Secret 等同密碼,**不要外流、不要 commit 進 git**。 ### Step 4 — 設定 OAuth Redirect URI(最容易出錯) 1. 左側找到 **Threads / Threads API → Settings(設定)**。 2. 找到 **Redirect Callback URLs / OAuth Redirect URI** 欄位。 3. 填入本工具的 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 個人設都要加進來: 1. 左側 **App roles → Roles(角色)**,或 Threads API 設定頁的測試者區塊。 2. 找到 **Threads Testers**,點「Add People / 新增」。 3. 輸入該人設的 **Threads 使用者名稱(@username)**,送出邀請。 4. **重點**:用那個人設帳號登入 Threads / Instagram,到 (或設定 → 帳號 → 網站權限 / Invites)**接受測試者邀請**。 5. 5 個人設各做一次。 > 沒接受邀請的帳號,授權時會出現「權限不足 / invalid_scope / 無法授權」之類的錯誤。 ### Step 6 — 在本工具填入 App ID / Secret(做一次) 1. 開本工具 → 左側 **連線設定**。 2. 在「官方 API」區塊填入 **Meta App ID** 與 **Meta App Secret**。 3. 確認頁面顯示的 **OAuth Redirect URI** 已經填回 Step 4 的 Meta 後台。 > 也可以改用環境變數(見最後一節),填了環境變數就不必在 UI 重填。 ### Step 7 — 每個人設各自連一次(重複 N 次) 1. 在左下角**帳號切換器**選到要連的人設(例如「人設 A」)。 2. 到 **帳號策略** 頁,找到「連線狀態」卡片。 3. 按「官方 API → 連線」,會跳轉到 Meta 授權頁,登入/確認後跳回。 4. 卡片變成「已授權連線」就完成了。 5. **切到下一個人設,重複 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 仍可覆蓋): ```bash THREADS_APP_ID=你的_App_ID THREADS_APP_SECRET=你的_App_Secret # 對外網址(影響 OAuth Redirect URI 與含圖發布) APP_URL=http://localhost:3000 ``` > Token 不放環境變數——它是每個帳號各自的,授權後存在本機資料庫的對應帳號上。