← 所有文章
教學

Telegram API_ID_PUBLISHED_FLOOD 點樣修復:復原檢查表

API_ID_PUBLISHED_FLOOD 代表 Telegram 已將授權請求所用的 api_id 判定為公開憑證,或認為它不適合已發布的應用程式。應立即停止用該憑證重試,確認 build 有否複製 Telegram 的受限範例 API ID,或自家應用程式憑證有否公開,再遷移至為自己應用程式申請的 API ID。Telegram 沒有為這個錯誤公開自助解鎖或輪替 endpoint。

重點速覽

  • Telegram 清楚指出,開源 client 內的範例 API ID 只供測試;用於正式應用程式會觸發 API_ID_PUBLISHED_FLOOD
  • Telegram API 條款要求應用程式取得自己的 api_id,複製其他 project 的憑證並非 production 做法。
  • API_ID_INVALIDAPI_ID_PUBLISHED_FLOODAUTH_KEY_DUPLICATEDSESSION_REVOKED 是不同故障。
  • 排查時不要記錄 api_hash、登入驗證碼、QR token 或匯出的 session。
  • 如要連接一般 Telegram 帳戶,BotFather token 不能取代 API ID/API hash。

Telegram API_ID_PUBLISHED_FLOOD 修復方法

這是應用程式憑證問題,不是「等一等再試」的提示。Telegram 在 auth.exportLoginToken 文件將它列為 400:API ID 曾經公開,因此目前不能使用。官方應用程式指南亦指出常見原因:Telegram 開源 client 附帶受限測試 API ID,但正式發布的應用程式必須使用自己的 ID。

先按錯誤類型處理:

錯誤Telegram 定義正確下一步
API_ID_PUBLISHED_FLOODAPI ID 已公開,或受限範例 ID 被用於測試以外暫停新授權;找出來源,以自家應用程式憑證取代範例或共享憑證
API_ID_INVALIDapi_idapi_hash 組合無效確認兩者屬於同一應用程式,並檢查 config parsing 有否改動值
AUTH_KEY_DUPLICATED同一 authorization key 被衝突的平行 main session 使用建立新的 authorization key 並重新登入;單純更換 API ID 並非官方處理方法
SESSION_REVOKED用戶已終止或撤銷授權用正確應用程式憑證重新授權
FLOOD_WAIT_X嘗試次數太多遵守 server 提供的等待時間,停止密集重試

本文不重複現有的 API ID/API hash 與 bot token 比較;該文協助選擇憑證,本文處理 MTProto 授權已失敗後的復原。

第一步:找出 API ID 來源

追蹤設定,但不要輸出原值。只保存安全 fingerprint、deployment 名稱及設定來源,並檢查:

  1. build 有否複製 Telegram 開源程式碼內的範例 ID;
  2. 同一組憑證有否出現在公開 repository、package、image、browser bundle、文件範例、issue 或 CI log;
  3. 多個產品或客戶有否共用原本不應共享的應用程式憑證;
  4. 錯誤發生於 code login、QR login,還是兩者都有。

Code 與 QR login 都使用 client application 的 api_idapi_hash。QR 只改變用戶批准登入的方式,不會取代應用程式憑證。Telegram 的 auth.exportLoginToken 同時需要兩個欄位,亦明確可能回傳 API_ID_PUBLISHED_FLOOD

第二步:取得正確應用程式憑證

登入 my.telegram.org,打開 API development tools,建立或查看與有效 Telegram 手機號碼關聯的 API ID 及 API hash。Telegram 目前指出每個號碼只可以有一個 API ID。

這項限制表示不能承諾官方未提供的即時輪替流程。如失敗值只是 Telegram 範例或其他 project 的憑證,改用自家應用程式憑證就是清晰的官方路徑。如自己的 API ID 曾公開並被拒絕,應先移除公開內容、保留不含秘密的證據,再透過 Telegram 官方支援處理,不要假設重試會解除狀態。

api_hash 只應留在 server,由 credential store 在 runtime 注入,不得進入 browser bundle,並在 log 及 error tracker 遮蔽。QR token、驗證碼、2FA 資料及 session 匯出是不同、同樣敏感的秘密。

第三步:安全遷移及重新驗證

  • 凍結所有繼續使用被拒絕 ID 的新登入。
  • 只在一個 test environment 更新 credential reference,不要把秘密貼入 source code。
  • 發起一次受控 code 或 QR 授權,只記錄錯誤類型、request stage 及 timestamp。
  • 成功後先驗證實際連接的帳戶,再逐步開放流量。
  • 監察 FLOOD_WAIT_XSESSION_REVOKED 及意外的 duplicate-session 錯誤。
  • 從 deployment manifest、範例、cached CI artifact 及支援手冊移除舊 credential reference。

不要用仍可運作的舊 session 證明應用程式憑證健康。Session 與 API ID 位於不同授權層,舊 session 無法驗證新的登入路徑。

UnifyPort 如何承接

UnifyPort 的一般 Telegram 帳戶流程使用同一應用程式邊界。Code 授權需要 provider_data.api_idprovider_data.api_hashprovider_data.phone;QR 授權仍需要 API ID 及 API hash。Telegram 授權指南列出 code、QR、2FA 及 session 的真實步驟。

如果 Telegram 拒絕應用程式憑證,UnifyPort 無法令它變有效、代為建立 Telegram API ID,或把 BotFather token 轉成一般帳戶 session。請先解決 Telegram 憑證,再重新啟動相應流程。

授權完成後,入站訊息可以標準化 message.received event 送達。Telegram 到 Slack relay 建置指南展示後續 webhook workflow,但應與憑證復原分開。

限制與取捨

如獨立 bot 身份符合需求,應使用官方 Bot API。Bot token 專為此模式設計,亦毋須一般帳戶登入,但不能代表已有一般帳戶。

只有產品確實需要一般帳戶身份時,才使用 MTProto 用戶授權。它會產生敏感 session,並繼續受 Telegram API 條款及自動濫用控制約束。非官方介面不能移除這些規則、保證恢復被拒絕的 API ID,或授權大量發送未經請求的訊息。

FAQ

Telegram API_ID_PUBLISHED_FLOOD 為何出現?

Telegram 文件提供兩個直接線索:auth.exportLoginToken 在 API ID 曾公開時回傳此錯誤;應用程式指南則說,正式應用程式使用開源 client 的受限範例 API ID 會觸發它。

等待可以修復 API_ID_PUBLISHED_FLOOD 嗎?

Telegram 沒有把它描述為有等待秒數的 FLOOD_WAIT_X,亦沒有公開自助解鎖時間。應停止重試,以自家憑證取代範例或借用憑證;如自己的 ID 已公開,請使用官方支援。

API_ID_INVALID 是同一錯誤嗎?

不是。API_ID_INVALID 代表 API ID/API hash 組合無效;API_ID_PUBLISHED_FLOOD 代表 ID 被識別為公開或不適合目前用途。變更 session 或憑證前先確認錯誤類型。

BotFather token 可取代被拒絕的 API ID 嗎?

不能用於一般帳戶授權。Bot token 只驗證 Bot API 的 bot;現有用戶帳戶的 code 與 QR login 仍需 API ID 及 API hash。

可以把 API hash 寫入 log 比對環境嗎?

不可以。請比較單向 fingerprint 或 secret version ID。API hash、驗證碼、QR token、2FA 資料及 session 匯出都不應進入 log、ticket、截圖或公開範例。

下一步

先按 Telegram 的官方應用程式設定指南確認整合使用自己的 API ID。修正憑證來源後,再按 UnifyPort Telegram 授權指南完成一次受控 code 或 QR 授權。

來源

來源及產品文件核驗日期:2026-08-10。