我明明設好自動刷新,社群機器人每隔一陣子就突然發不出文!
你幫社群帳號做了自動發文機器人,還設了 token 自動刷新,結果它每隔一段時間就無聲無息地掛掉、發不出文。這不是刷新沒用——你缺的詞其實藏在一個超反直覺的地方。這頁是一個「我原本以為的原因是錯的」的誠實除錯故事。
先講一件事:這篇跟其他篇不太一樣。這是一個「我一開始判斷錯了、後來被實測打臉」的誠實故事。 我留著它,因為你踩這個坑時,八成也會先猜錯方向。
情境:你幫一個社群帳號做了自動發文機器人。這種平台的 token(通行證)會過期,所以你很負責任地設了「自動刷新」。結果——它還是每隔一陣子就無聲無息地掛掉,發不出文。
我一開始的判斷是:「一定是刷新的時候,新 token 生出來、把舊的作廢了,但新的沒接好,所以斷掉。」聽起來很合理對吧?
然後我真的去實測,發現我錯了。
你缺的詞 = long-lived token 刷新語意 + 唯讀 Secret vs 可寫 KV
真相:刷新「不會」殺掉舊 token(人話版)
我拿真的 production token 做了實驗:
- 舊 token → 測 → 活著 ✅
- 呼叫刷新 → 拿到一個全新的 token
- 立刻回頭測舊 token → 還活著 ✅
- 等 20 秒再測舊 token → 還是活著 ✅
結論:刷新根本不會讓舊 token 立刻失效。 舊的會一路活到它原本的 60 天到期為止,新的只是「重新開一個 60 天的計時」。(這其實跟平台官方文件寫的一模一樣,是我一開始沒仔細讀。)
所以「每隔一陣子就掛」的真正原因,是另外兩個更陰的:
- 新 token 根本沒被存下來。 程式刷新成功、拿到新 token,但只是把它印在 log 裡(沒真的存起來)。於是舊 token 默默地漂到 60 天自然過期那天——啪,掛了。
- 刷新其實失敗了,但程式沒發現。 有些平台規定 token 要「滿 24 小時」才准刷新,太新的會被拒絕、回一段錯誤訊息。而程式沒去檢查「這是不是錯誤」,把錯誤訊息當成新 token 存下去,於是 token 悄悄壞掉。
正確做法:存在「能寫」的地方 + 檢查錯誤
這裡有個超容易踩的技術陷阱,特別是用 Cloudflare Workers 這類服務的人:
你的 token 如果存在「Secret」裡,程式在跑的時候是「唯讀」的——它讀得到,但寫不回去。
這就要命了:自動刷新的整個重點,就是「拿到新 token → 寫回去覆蓋舊的」。但如果存的地方唯讀,這個「寫回去」的動作根本做不到,刷新等於白做。
正解:把會輪替的 token 存在「可以寫入」的地方(例如 Cloudflare KV),不要存在唯讀的 Secret。 然後刷新後,一定要檢查回應裡有沒有 error 欄位,確認真的拿到新 token 才存。
每天定時檢查:
token 存在「可寫入」的 KV 裡(不是唯讀 Secret)
快到期了 → 呼叫刷新
回應有 access_token(不是 error)→ 把新 token 寫回 KV ✅
回應是 error → 別亂存!保留舊 token(它還活著)+ 發個通知給自己
⚖️ 誠實說清楚:這個「唯讀 Secret」陷阱是 Cloudflare Workers 特有的,但**「刷新成功但沒存下來」「沒檢查錯誤就當成功」這兩個坑,任何自動化 token 輪替都會踩**。而這篇最想給你的,其實是那個更大的教訓:當某個東西「每隔一段時間就規律性地壞」,先別急著相信你的第一個假設——去實測。我一開始的判斷(刷新殺舊 token)完全是錯的。
你會搜錯的關鍵字 vs 該搜的正確詞彙
| 你崩潰時會打的(搜不到) | 該搜的正確詞彙 |
|---|---|
| 「Threads 機器人一直發不出文」 | long-lived access token expiry |
| 「token 自動刷新沒用」 | token rotation / persist refreshed token |
| 「Cloudflare Worker token 存哪」 | Worker Secret read-only / KV writable |
把右邊那欄丟進 Google、或直接貼給你的 AI。這就是我們在幹的事——把你崩潰時打出來的髒話,翻譯成能找到答案的詞。
🎁 直接貼給你的 ChatGPT / Claude
這一段免費。複製、貼上、送出——先讓你的 AI 動起來。
我做了一個自動發文到社群平台(例如 Threads)的機器人,用的是會過期的 access token(長效 token,60 天)。我設了自動刷新,但它還是每隔一段時間就發不出文。 請幫我釐清: 1. 「刷新 token」到底會不會讓舊 token 立刻失效?(很多人以為會,但實際上呢?) 2. 如果我的自動刷新「成功拿到新 token 但沒存下來」,會發生什麼事? 3. 為什麼把 token 存在「唯讀的 Secret」裡會導致刷新失敗?該存在哪裡(例如可寫入的 KV)? 4. 我的程式呼叫刷新後,該檢查回應裡的什麼欄位,才不會把錯誤訊息當成新 token?
想更進一步?
上面免費的三層已經能讓你動起來。如果你想要「照著做不迷路」甚至「我們幫你跑好」——往下看。
- 免費 這個坑是什麼、誰會踩
- 免費 人話解釋:錯在哪、正確的詞彙
- 免費 一段可直接貼給 AI 的 prompt
完整實作文件
未來新增- 長效 token 自動輪替的完整正確架構(存哪、何時刷、怎麼檢查錯誤)
- 「唯讀 Secret vs 可寫 KV」的差別與遷移步驟
- 刷新失敗也不會死的容錯設計(舊 token 還活著就安全)
可跑的 codebase / skill
未來新增- 現成的 token 輪替模組,複製到你的專案改設定就能用
- ✅ 到期前自動刷新 ✅ 存進可寫 KV ✅ 失敗保留舊 token + 告警
本文首發於 AI 許願池(https://kaowan.pages.dev/articles/social-bot-dies-every-week/),發佈日 2026年7月5日。 轉載請註明出處——原創者不怕考古,只有小偷怕。🕳️