Threads API 申請教學:
60 天 Token 到期不會通知你,錯誤訊息全對照
申請那兩把鑰匙。
想讓 n8n 幫你自動發文,要先拿到兩把鑰匙:Google 的,讓機器讀得到你的 Google Sheet;Meta 的,讓機器有資格把貼文送上 Threads。申請本身不難,難在後台改版頻繁、選單藏很深、還有幾個一定會讓人卡住的畫面。這頁把每一步、每個會嚇到你的提示、每個錯誤訊息都寫出來。
先別動手,你可能不用申請
Google 這段有三條路,走錯會白做一小時。先花三十秒對號入座。
你用 n8n Cloud
網址長得像 你的名字.app.n8n.cloud 就是這種。Google Sheets 憑證直接按「Sign in with Google」登入就好,整個 Google 申請流程可以完全跳過。
直接跳到 Meta 那段 →你自己架 n8n
用 Docker、VPS、或本機跑 localhost:5678 的都算。要自己去 Google Cloud 申請一組憑證,也就是下面那一整段。
從 Google 第一步開始 →你不想每 7 天重新登入
Google 的測試模式有個惡名昭彰的七天過期。想一勞永逸,走 Service Account(機器人帳號)這條路,設定稍微多兩步,但不會過期。下面第 1、2 步(建專案、開兩個 API)還是要先做。
看 Service Account 做法 →Meta 那段(Threads 發文權限)不管你走哪條路都要做,沒有捷徑。
看 Meta 申請流程先把這幾個字搞懂
後台全是英文術語,其實講的都是很日常的事。看完這張表,後面每一步都會變得好懂。
八個一定會遇到的詞(點開/收合)
- OAuth
- 「代客授權」的機制。你不用把 Google 密碼交給 n8n,而是去 Google 那邊按同意,Google 再發一張通行證給 n8n。像是飯店給清潔人員的房卡,能開門但不是你的鑰匙。
- Client ID / Secret
- 這台 n8n 在 Google 眼中的帳號與密碼,用來證明「來敲門的是我這個程式」。Secret 顧名思義不能外流,貼文、截圖、傳給別人都不行。
- Redirect URI
- 你在 Google 按下同意之後,Google 要把你送回哪個網址。這個網址必須事先登記,差一個斜線都會被擋,是新手最常見的錯誤來源。
- Scope(權限範圍)
- 你允許程式做哪些事,例如只讀試算表、或可以編輯。像是點餐時勾選的品項,勾越少越安全。
- Token(存取權杖)
- 實際拿去開門的那張通行證。有效期限到了就要換新的。Threads 的通行證是 60 天,Google 的看你怎麼設定,可能只有 7 天。
- Service Account
- 一個「機器人專用的 Google 帳號」,它有自己的 email。給它權限的方式就是把 Sheet 分享給它,跟你分享檔案給同事一模一樣。
- Container(容器)
- Threads 發文的第一步,先把貼文存成草稿,Meta 那邊處理完你再按發布。像是先把包裹打包好,貼單子是下一步。
- App Review(送審)
- 要讓「其他人」也能用你的 App 才需要送審。你自己用自己的帳號發文,完全不用送,這點很多人誤會。
開始前,先確認這幾件事
- 你有一個 Google 帳號(一般 Gmail 就可以,不用付費的 Workspace)
- 你有一個 Facebook 帳號,用來登入 Meta 開發者後台(管 App 的是它)
- 你有一個 Threads 帳號,也就是實際要發文的那個(它綁在你的 Instagram 上)
- 全程不需要綁定信用卡,也不需要啟用 Google 的計費帳戶
- n8n 已經裝好也登得進去,等一下有兩步要在 n8n 和後台之間來回複製
- 準備約 40 分鐘,中間有幾個等待畫面,不要急著關視窗
Google:讓機器讀得到你的表格
目標是拿到一組 Client ID 與 Client Secret,貼進 n8n 的 Google Sheets 憑證裡。用 n8n Cloud 的人請直接跳過這段。
建立一個 Google Cloud 專案
打開 console.cloud.google.com,用你的 Google 帳號登入。第一次進去會先要你選國家、勾選同意服務條款,照著按完就好。
登入後看畫面最上方,Google Cloud 標誌右邊有一個專案下拉選單。點開它,右上角選 New project(新增專案)。專案名稱隨便取,例如 n8n-auto-post。Organization(機構)欄位如果你是個人 Gmail,會顯示 No organization,這是正常的,不用改。按 Create。
把兩個 API 打開
點左上角的 ☰ 漢堡選單,選 APIs & Services 底下的 Library(程式庫)。
搜尋 Google Sheets API,點進去按 Enable。回到 Library,再搜尋 Google Drive API,一樣按 Enable。
設定同意畫面(現在叫 Google Auth Platform)
這一步是在告訴 Google:待會會有一個程式來要權限,它叫什麼名字、誰在負責。
左側選單找 Google Auth Platform(舊版叫 OAuth consent screen,Google 已改版重整成這個名字)。第一次進去按 Get started,依序填:App name(隨便取,你自己看得懂就好)、User support email(選你自己的信箱)。
Audience(對象)這一步:個人 Gmail 帳號只能選 External,Internal 會是反灰的,因為那是給有 Google Workspace 組織的公司用的。選 External 繼續,填聯絡信箱、勾選同意政策,按 Create。
Branding 頁裡的 Authorized domains,如果你的 n8n 跑在本機沒有網域,留空不填即可。Data Access(scopes)那一頁也可以先不設定,n8n 授權的時候會自己帶。
先去 n8n 拿一段網址,再回來建憑證
這一步順序有點反直覺,但照做會省下很多時間。因為建立憑證時要填的「Redirect URI」,得先從 n8n 那邊複製過來。
先開另一個分頁進 n8n:左側選單 Credentials,按 Add credential,搜尋並選 Google Sheets OAuth2 API(注意不是 Google Sheets API,差一個 OAuth2)。視窗打開後,裡面會顯示一行 OAuth Redirect URL,把它複製起來,這個視窗先不要關、也不用儲存。
它長得像這樣,以你視窗上顯示的為準:
正式站:https://<你的n8n網域>/rest/oauth2-credential/callback
本機跑:http://localhost:5678/rest/oauth2-credential/callback回到 Google Cloud,走 Google Auth Platform > Clients > Create client(舊版路徑是 APIs & Services > Credentials > + Create credentials > OAuth client ID,兩個入口都通)。Application type 選 Web application,往下找到 Authorized redirect URIs,按 Add URI,把剛剛複製的網址整段貼上,按 Create。
貼回 n8n,完成授權
切回剛剛沒關的 n8n 憑證視窗,把 Client ID 貼進 Client ID 欄,Client Secret 貼進 Client Secret 欄,然後按 Sign in with Google。
會跳出 Google 登入視窗,選你的帳號。
同意權限之後視窗會自動關閉,回到 n8n 按 Save。
如果你不想每 7 天重新授權一次,下面這條路更適合長期跑自動化。
改用 Service AccountService Account:一個不會過期的機器人帳號
上面那條 OAuth 路線在測試模式下有七天過期的問題。如果你要讓工作流跑好幾個月沒人管,這條路更省心。前提是先完成上一段的第 1 步(建立專案)與第 2 步(啟用 Sheets 與 Drive API),這兩步兩條路都要做。
建立 Service Account 並下載金鑰
同一個 Google Cloud 專案裡,走 APIs & Services > Credentials > + Create credentials > Service account。
取個名字(例如 n8n-bot)按 Create and continue。接下來 Google 會問你要給什麼角色、要授權誰管理,這兩頁都可以直接略過,按 Continue、Done。
建好後在列表裡點這個帳號,切到 Keys 分頁,按 Add key > Create new key > 選 JSON > Create。瀏覽器會下載一個 .json 檔案。
從 JSON 裡取出兩個值
用任何文字編輯器打開剛下載的 JSON 檔(記事本、VS Code 都可以),裡面找兩個欄位:
{
"client_email": "n8n-bot@你的專案.iam.gserviceaccount.com",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEv...很長一串...\n-----END PRIVATE KEY-----\n"
}在 n8n 新增憑證時一樣搜尋 Google Sheets,但認證方式選 Service Account 模式(不是前面那條路的 OAuth2),把 client_email 貼進 Service Account Email,private_key 貼進 Private Key。
把表格分享給這個機器人
這一步是 Service Account 路線最常被漏掉的關鍵:機器人帳號預設什麼都看不到,你得像分享給同事一樣把表格分享給它。
打開你要用的 Google Sheet,按右上角共用,把剛剛那個 client_email 貼進去,權限給編輯者(n8n 要寫入 ThreadId 回表格,唯讀不夠),送出。
Meta:拿到發文資格
目標是拿到一組 Threads App ID、App Secret,最後換到一張 60 天有效的 Token。自己發自己的帳號,全程不用送審。
先搞懂這裡有三個帳號在動,很多人是被這件事弄糊塗的:你用 Facebook 帳號登入開發者後台去管理 App;真正發文的是你的 Threads 帳號;而 Threads 帳號本身是綁在你的 Instagram 上的。三個不是同一個系統,但要串在一起才能動。
成為 Meta 開發者
打開 developers.facebook.com,用 Facebook 帳號登入,按註冊成為開發者。會要你驗證 email 和手機(收簡訊驗證碼)、同意條款、選一個職業別。免費,不用商業驗證。
建立 App,用途選 Threads
進 My Apps > Create App。填 App 名稱(自己看得懂即可)與聯絡 email,如果問到 business portfolio(商業檔案)可以略過不選。
接著在用途(use case)清單裡選 Access the Threads API。這是關鍵的一步,選錯用途後面找不到 Threads 相關設定。
加上發文權限
在 Use cases > Threads API > Customize 的權限清單裡:
- threads_basic:讀基本資料,必備,本來就不能移除
- threads_content_publish:發文用,要自己按 Add 加上去
如果之後想讓機器人自動回覆留言,可以一併加 threads_manage_replies;只是要發主文加留言的話,上面兩個就夠。
填三個必填網址(自用的人最卡這裡)
同一個 Settings 頁面有三個欄位一定要填:Redirect Callback URL、Deauthorize Callback URL、Data Deletion Request URL。新手到這裡通常會愣住,因為自己根本沒有網站。
你不需要真的架一個伺服器。這三欄可以填同一個你能打開的 https 網址,例如你自己的官網首頁,或任何一個你有權限的網域。它的作用只是「授權完成後把你送到哪裡」,等一下你要做的事,是從跳轉後的網址列把授權碼複製下來。
把自己加成 Tester,然後去 Threads 接受邀請
在 App 後台走 App roles > Roles > Add People,身分選 Threads Tester,輸入你自己的 Threads 帳號名稱,送出。
然後這一步絕對不能漏:打開 Threads App 或網頁版,進 設定 > 帳號 > 網站權限(Website permissions),在邀請清單裡按接受。
三步驟換到 60 天通行證
流程是:先拿一組只能用一次的授權碼,換成 1 小時的短期通行證,再換成 60 天的長期通行證。三個指令,照著貼就好。
產生授權連結,拿到授權碼
下面這串本來就是一行(畫面上會自動折行顯示),整段複製後把 <你的APP_ID> 與 <你登記的網址> 兩處換成自己的值,再貼進瀏覽器網址列。
https://threads.net/oauth/authorize?client_id=<你的APP_ID>&redirect_uri=<你登記的網址>&scope=threads_basic,threads_content_publish&response_type=code
按下同意之後,瀏覽器會跳到你填的那個網址,重點在網址列:後面會多出一段 ?code=AQBx...。把 code= 後面那一長串複製下來。
換成短期通行證(1 小時)
打開終端機(Mac 內建的「終端機」App),把下面指令的四個 <...> 換成你自己的值,整段貼上按 Enter。Windows 的使用者請用 WSL 或 Git Bash 執行,PowerShell 內建的 curl 不吃這個寫法。
curl -X POST "https://graph.threads.net/oauth/access_token" \ -F "client_id=<你的APP_ID>" \ -F "client_secret=<你的APP_SECRET>" \ -F "grant_type=authorization_code" \ -F "redirect_uri=<你登記的網址>" \ -F "code=<剛剛複製的授權碼>"
換成 60 天長期通行證
拿上一步的短期 token,換成正式要用的那張。
curl -s "https://graph.threads.net/access_token?grant_type=th_exchange_token&client_secret=<你的APP_SECRET>&access_token=<上一步的短期TOKEN>"
貼回 n8n
n8n 沒有官方的 Threads 節點,發文要用 HTTP Request 節點自己打 API。憑證設定方式:Credentials > Add credential > 選 Header Auth,兩個欄位這樣填:
- Name 欄填:Authorization
- Value 欄填:Bearer <你的60天TOKEN>(Bearer 後面有一個半形空格)
存成一個好認的名字,之後所有 Threads 節點共用同一份憑證就好。
測試發一篇看看
發文是兩步驟:先建草稿容器、再發布。用剛剛記下的 user_id。一樣在終端機執行,Windows 請走 WSL 或 Git Bash。
curl -X POST "https://graph.threads.net/v1.0/<你的USER_ID>/threads" \ -F "media_type=TEXT" \ -F "text=測試一下自動發文" \ -F "access_token=<你的60天TOKEN>"
curl -X POST "https://graph.threads.net/v1.0/<你的USER_ID>/threads_publish" \ -F "creation_id=<上一步回傳的容器ID>" \ -F "access_token=<你的60天TOKEN>"
如果忘了記 user_id,可以用這個查:
curl -s "https://graph.threads.net/v1.0/me?fields=id,username&access_token=<你的60天TOKEN>"Token 拿到了,接下來就是把它接進工作流。那條 19 節點的自動發文生產線在這裡。
看 n8n 工作流拆解六十天後它會安靜地死掉
Threads 的 token 沒有自動續約機制,過期不會報錯,只會發不出去。這是所有自動發文的人都會踩一次的坑。
怎麼續
Token 滿 24 小時之後、還沒過期之前,都可以打這個 endpoint 換一張新的 60 天。
curl -s "https://graph.threads.net/refresh_access_token?grant_type=th_refresh_token&access_token=<你目前的TOKEN>"最省事的做法:在 n8n 裡開一條每 30 天跑一次的排程工作流,自動打這支 API、把新 token 寫回憑證或記事本。等到過期才想起來,就要整套重跑一次授權流程。
Google 那邊也有一個時鐘
如果你的 Google 同意畫面停在 Testing 狀態,授權的有效期只有 7 天,到期 n8n 會出現 invalid_grant 錯誤。
解法是把它發布出去:Google Auth Platform > Audience 頁,找到 Publishing status,按 Publish app 切換成 In production。自用不需要送 Google 驗證,代價只是授權時會看到未驗證警告,按進階繼續就好。
另外兩個會讓 Google token 失效的狀況:連續 6 個月沒使用,或你在 Google 帳號安全設定裡把這個 App 的存取權移除掉。
建議設定的三個提醒
- Threads token 第 50 天:日曆提醒自己確認續命工作流有跑成功
- n8n 主工作流加一個錯誤分支,遇到 401 就發訊息通知你,不要讓它默默失敗
- Google 憑證改成 In production 之後,記得回 n8n 重新授權一次,舊的通行證不會自動延長
照著錯誤訊息找答案
這幾個是實際跑下來出現頻率最高的。點開看症狀、原因和解法。
每七天就要重新登入 Google 一次
原因:同意畫面還停在 Testing 狀態。Google 明文規定,測試模式發出的授權固定 7 天失效,跟你有沒有在用無關。
解法:Google Auth Platform > Audience > Publishing status 按 Publish app,切成 In production 就沒有這個限制了。自用不需要送審。或者改用 Service Account,它不會過期。
授權時說網址對不上
原因:Google Cloud 裡登記的網址,跟 n8n 實際送出的那一個不完全一樣。常見差異:http 與 https、有沒有結尾斜線、用了 localhost 但 n8n 認為自己是別的網址、或是透過反向代理造成 n8n 誤判自己的網域。
解法:回 n8n 憑證視窗,把那行 OAuth Redirect URL 重新複製一次,整段貼進 Google 的 Authorized redirect URIs,不要手打。Docker 環境記得設定 WEBHOOK_URL 讓 n8n 知道自己對外的網址。
Google 說這個應用程式未驗證
原因:你的 App 要求了 Google 認定的敏感權限(Sheets、Drive 都算),但沒有經過 Google 的審查流程。
解法:點左下角進階,再點前往(不安全)。你是在授權自己寫的程式讀自己的檔案,這樣做沒有風險,也不需要為了自用去送審。如果那一頁完全找不到「進階」,把自己的 Gmail 加進 Test users 也能繞過,但就要接受 7 天過期的限制。
Threads 授權說沒有接受邀請
原因:你在 Meta 後台把帳號加成 Tester 了,但沒有去 Threads 那一端按接受。這兩件事在不同系統,後台不會提醒你。
解法:打開 Threads,進設定 > 帳號 > 網站權限,找到那個 App 的邀請按接受,再重新授權一次。順帶檢查你用的是不是 Threads 專用的那組 App ID。
排程貼文突然全部發不出去,也沒看到錯誤
原因:60 天的 token 到期了。Threads 沒有傳統的自動更新機制,過期後那張通行證就作廢,而 HTTP Request 節點的失敗常常安靜地躺在執行紀錄裡沒人看。
解法:重新走一次授權流程拿新 token。長期解法是設定每 30 天自動 refresh 的排程,加上 401 的通知分支。
發文回報超過限制
原因:Threads 官方限制有好幾條:主文每篇上限 500 字元;24 小時滾動計算之下,主文 250 篇、留言 1000 則(留言不計入主文額度)。另外圖片單張 8MB、影片最長 300 秒、輪播 2 到 20 張算一篇。
解法:等 24 小時自動解除,或降低發文頻率。想知道自己用掉多少,可以打 GET /{user-id}/threads_publishing_limit 查目前用量。一般個人帳號一天發個幾篇,離上限非常遠。
n8n 憑證明明存好了,隔天就失效
原因:幾個常見狀況:憑證建立後改過名字(n8n 已知問題,改名會壞)、Docker 重建時 N8N_ENCRYPTION_KEY 沒固定導致舊憑證解不開、或是 Google 那端已經撤銷授權。
解法:刪掉憑證重新建立一份,名字一次取好不要再改。自架的話把 encryption key 寫死在環境變數裡並且備份起來。
Meta 後台一直顯示 App 在開發模式,這樣可以嗎?
可以,而且應該就停在這裡。開發模式的意思是「只有具備角色的帳號能授權」,而你自己就是那個 Tester,完全夠用。
只有當你想讓「其他不特定用戶」也能用你的 App 登入時,才需要切 Live 並送 App Review。自己發自己的帳號,不用送審、不用切換。
全部做完了嗎
照這張表逐項確認,全部打勾就可以去接工作流了。
Google 這邊
- Google Sheets API 與 Google Drive API 兩個都顯示已啟用
- 同意畫面已建立,自己的 Gmail 已加入 Test users(或已改成 In production)
- OAuth Client 的 Authorized redirect URI 與 n8n 顯示的那行完全一致
- n8n 的 Google Sheets 憑證顯示已連線,且能實際讀到你的表格
- 走 Service Account 的話:Sheet 已經分享給那個 iam.gserviceaccount.com 帳號,權限是編輯者
Meta 這邊
- App 的用途是 Access the Threads API,權限含 threads_basic 與 threads_content_publish
- 使用的是 Threads 專用的 App ID 與 App Secret,不是一般那組
- 三個 callback 網址都填了,且授權連結帶的是同一個網址
- 自己已加成 Threads Tester,並且已在 Threads 的網站權限裡按過接受
- 已拿到 60 天長效 token,user_id 也記下來了
- 已經成功測試發出一篇貼文
- 已設定 token 續命的排程或日曆提醒
本頁流程於 2026 年 7 月依官方文件實測整理,來源: n8n Google 憑證文件、 Google Sheets API 配額、 Google OAuth 測試模式說明、 Threads API 入門、 Threads 長效 Token、 Threads API 限制。 兩邊的後台介面偶爾會改版,選單名稱若對不上,以畫面上實際顯示的為準。