目錄
事前準備
- 一個 Facebook 帳號(登入 Meta for Developers 用)。
- 一個 Threads 帳號(公開帳號才能用權杖產生器產生權杖;發文就發在這個帳號上)。
註冊 Meta 開發者帳號
開啟 https://developers.facebook.com,用 Facebook 帳號登入,首次使用點右上角「開始使用」(Get Started),同意開發者條款、驗證電子郵件/手機即完成註冊(已是開發者可跳過本步)。完成後點上方 我的應用程式 進入應用程式列表。
建立應用程式(5 步驟精靈)
在「應用程式」頁右上角按綠色 建立應用程式。精靈共 5 步:應用程式詳細資料 → 使用案例 → 商家 → 要求 → 總覽。
2-1 應用程式詳細資料
2-2 使用案例:勾選「存取 Threads API」
| 🎯 使用行銷 API 建立和管理廣告 | ☐ |
| 🧵 存取 Threads API 使用 Threads API,並選擇驗證用戶、擷取用戶資訊、發佈串文、回覆串文、管理回覆設定,以及/或是收集自有或替其他商家代管的 Threads 個人檔案的洞察報告。 | ✔ |
| f 使用 Facebook 登入,驗證用戶並索取資料 | ☐ |
| 🟢 透過 WhatsApp 與顧客建立聯繫 | ☐ |
2-3 商家 → 2-4 要求 → 2-5 總覽
- 商家:選 我還不想連結商家資產管理組合(個人開發不需要),按「繼續」。
- 要求(發佈條件):顯示「找不到條件」,直接按「下一步」。
- 總覽:確認名稱、電子郵件與使用案例無誤,按綠色 建立應用程式。
加入權限:發文與回文
主控板會出現「應用程式自訂和要求」清單,點第一項 自訂存取 Threads API 的使用案例(或左側 使用案例 → 自訂),進入「權限和功能」頁。
| 權限和功能 | 狀態 | 操作 |
|---|---|---|
| threads_basic 讀取用戶自己的串文與基本資料(預設必備) | 可供測試 | 操作 ▾ |
| threads_content_publish 允許 App 代表 Threads 個人檔案建立與發佈內容(發文必備) | 可供測試 | 操作 ▾ |
| threads_manage_replies 代表用戶建立回覆、隱藏/取消隱藏回覆、控制誰可以回覆(回文必備) | 可供測試 | 操作 ▾ |
| threads_read_replies 讀取用戶串文的回覆(讀回覆串必備) | 可供測試 | 操作 ▾ |
| threads_delete / threads_keyword_search / threads_manage_insights … | + 新增 |
- threads_basic 建 App 時已自動加入(所有 Threads API 呼叫的基礎)。
- 找到 threads_content_publish 按 + 新增 —— 這是「發文」權限。
- 找到 threads_manage_replies 按 + 新增 —— 這是「回文」權限。
- 建議一併加入 threads_read_replies,才能讀取回覆串。
使用案例「設定」:App 編號、密鑰與回呼網址
左側切到 設定(使用案例的設定,不是應用程式設定),這頁有四樣關鍵資訊:
- Threads 應用程式編號 / 密鑰:寫程式走 OAuth 流程時的 client_id / client_secret。密鑰請妥善保管,勿放進前端或公開 repo。
- 重新導向回呼網址:OAuth 授權完成後跳轉的網址,必須是 HTTPS(實測 localhost 會被拒絕)。輸入網址後要按 Enter 讓它變成標籤(chip)再按「儲存」,否則會出現「無法儲存表單」。
- 解除安裝 / 刪除回呼網址:使用者取消授權或要求刪除資料時,Meta 會 ping 的端點。開發階段可先填占位網址。
新增 Threads 測試人員並產生存取權杖
- 在「用戶權杖產生器」按 新增或移除 Threads 測試人員,會開啟「應用程式角色」頁。
- 按 新增用戶 → 選 Threads 測試人員 → 輸入你的 Threads 用戶名稱(@handle)→ 送出邀請。
- 用手機打開 Threads App:設定 → 帳號 → 網站權限 → 邀請,接受測試邀請。
- 回到「設定」頁的用戶權杖產生器,你的帳號旁會出現 產生存取權杖 按鈕,點它並登入 Threads 授權,即可複製一組長效存取權杖(60 天有效)。
用 API 發文
Threads 發文是兩段式:先建立「媒體容器」,再「發佈」容器。端點是 https://graph.threads.net。
# 1) 建立文字貼文容器 curl -X POST "https://graph.threads.net/v1.0/me/threads" \ -d "media_type=TEXT" \ -d "text=我的第一篇 Threads API 貼文!" \ -d "access_token=你的存取權杖" # 回傳 {"id": "17888..."} ← 這是容器 ID # 2) 發佈容器(建議等 30 秒讓伺服器處理完) curl -X POST "https://graph.threads.net/v1.0/me/threads_publish" \ -d "creation_id=17888..." \ -d "access_token=你的存取權杖" # 回傳 {"id": "18027..."} ← 這是正式貼文 ID
Python 版:
import requests, time, os TOKEN = os.environ["THREADS_TOKEN"] BASE = "https://graph.threads.net/v1.0" # 建立容器 r = requests.post(f"{BASE}/me/threads", data={ "media_type": "TEXT", "text": "用 Python 發的 Threads 貼文 🎉", "access_token": TOKEN, }).json() container_id = r["id"] time.sleep(30) # 官方建議等容器處理完再發佈 # 發佈 r = requests.post(f"{BASE}/me/threads_publish", data={ "creation_id": container_id, "access_token": TOKEN, }).json() print("貼文 ID:", r["id"])
用 API 回覆串文
回覆(回文)同樣是兩段式,只是在建立容器時多帶一個 reply_to_id 參數(需要 threads_manage_replies 權限):
# 1) 建立「回覆」容器:reply_to_id = 要回覆的貼文 ID curl -X POST "https://graph.threads.net/v1.0/me/threads" \ -d "media_type=TEXT" \ -d "text=這是用 API 發出的回覆!" \ -d "reply_to_id=18027..." \ -d "access_token=你的存取權杖" # 2) 一樣用 threads_publish 發佈 curl -X POST "https://graph.threads.net/v1.0/me/threads_publish" \ -d "creation_id=回覆容器ID" \ -d "access_token=你的存取權杖"
常用的回覆管理端點(threads_read_replies / threads_manage_replies):
| 目的 | 端點 | 方法 |
|---|---|---|
| 讀取某貼文的回覆 | /{media_id}/replies | GET |
| 讀取整串對話 | /{media_id}/conversation | GET |
| 隱藏/顯示某則回覆 | /{reply_id}/manage_reply(hide=true/false) | POST |
| 限制誰能回覆 | 建容器時帶 reply_control(everyone / accounts_you_follow / mentioned_only) | POST |
常見問題
Q1:「重新導向回呼網址」一直存不進去?
兩個常見原因:(1) 網址不是 HTTPS 或用了 localhost —— 換成正式網域;(2) 輸入後沒按 Enter 把網址變成標籤(chip)就按儲存 —— 實測必須先 Enter 再儲存。
Q2:權杖產生器沒有「產生存取權杖」按鈕?
對方(或你自己)還沒在 Threads App 裡接受測試人員邀請,或 Threads 帳號不是公開帳號。
Q3:發文回傳權限錯誤 (#10 或 OAuthException)?
檢查三件事:權杖是否過期(60 天)、該權限是否已加入使用案例(步驟 3)、授權當下是否有勾選對應 scope(threads_content_publish 等)。
Q4:一天可以發多少篇?
目前官方限制約每 24 小時 250 篇貼文、1,000 則回覆。可用 GET /me/threads_publishing_limit 查詢已用額度。
Q5:要給其他人使用我的服務?
需在「應用程式審查」中為 threads_basic、threads_content_publish 等權限申請「進階存取」,提交使用說明與示範影片,審核通過後任何 Threads 用戶都能授權你的 App。