先檢查時間同步
TOTP 使用目前 Unix 時間和時間步,通常是 30 秒。如果裝置時間不準,或你在驗證碼即將過期時提交,服務端可能會拒絕這個驗證碼。
TOTP Authenticator 驗證碼只有在服務端和產生器使用同一個 secret、同一個時間視窗和同一組參數時才會通過。遇到 2FA 或 MFA 驗證碼被拒絕、過期、無效,或和另一個 Authenticator 應用程式顯示不同,可以按這個清單排查。
TOTP 使用目前 Unix 時間和時間步,通常是 30 秒。如果裝置時間不準,或你在驗證碼即將過期時提交,服務端可能會拒絕這個驗證碼。
每個帳號都應該有獨立的設定 secret。來自錯誤帳號、issuer、工作區或舊設定金鑰的驗證碼,在產生器裡看起來正常,但登入頁面會驗證失敗。
大多數服務使用 SHA-1、6 位、30 秒,但也有服務使用 SHA-256、SHA-512、8 位或自訂週期。產生器必須和服務端設定一致。
TOTP Authenticator 驗證碼不是簡訊驗證碼、電子郵件驗證碼、推送確認、Passkey 提示、備用碼或恢復碼。登入頁面必須是在要求輸入 Authenticator 應用程式驗證碼。
如果驗證碼快過期了,等下一個驗證碼再提交。有些服務還會拒絕重複使用已經成功驗證過的一次性驗證碼。
如果設定 secret 遺失、刪除,或在重新設定 2FA 時被替換,產生器無法重新建立正確驗證碼。請使用恢復碼或服務商的帳號恢復流程。
用這個表把失敗現象對應到最可能的 TOTP 原因、應檢查的內容和下一步修復方式。
| 現象 | 可能原因 | 檢查什麼 | 修復方式 |
|---|---|---|---|
| 快速複製後仍被拒絕 | 裝置或瀏覽器時間不同步 | 對比裝置時間和自動網路時間,並等到下一個 30 秒視窗 | 開啟自動日期、時間和時區,然後重新整理產生器 |
| 另一個 Authenticator 應用程式顯示不同驗證碼 | 帳號、issuer、工作區或 setup secret 不同 | 對比 issuer、帳號標籤、email 位址和原始 Base32 設定金鑰 | 使用目前登入頁面對應帳號的設定金鑰 |
| 金鑰能識別但驗證碼始終無效 | 複製的設定金鑰不完整或有錯誤字元 | 從帳號設定頁重新複製 Base32 secret 或完整 otpauth URI | 重新貼上原始設定值,不漏掉任何字元 |
| 驗證碼位數或倒數和服務不同 | 演算法、位數或週期不匹配 | 在 otpauth URI 或設定頁中查找 SHA-1/SHA-256/SHA-512、6/8 位和週期 | 設定成和服務一致的演算法、位數和週期 |
| 有時能用,但倒數快結束時失敗 | 驗證碼在驗證前過期,或已經被使用過 | 檢查剩餘秒數,以及同一個驗證碼是否已提交過 | 等待新的驗證碼,並在時間視窗前半段提交 |
| 登入頁要求其他驗證方式 | 頁面要的是簡訊、email OTP、推播確認、passkey、硬體金鑰、備份碼或恢復流程 | 閱讀登入頁文案,確認它是否要求 Authenticator 應用程式驗證碼 | 使用頁面要求的方法或帳號恢復;TOTP 產生器不能建立這些驗證碼 |
在執行產生器的裝置上開啟自動日期、時間和時區,然後刷新頁面或等待下一個 TOTP 時間視窗。
不要提交只剩幾秒的驗證碼。等倒計時重置後,立刻複製新的驗證碼。
確認產生器名稱、issuer、電子郵件、工作區或服務標籤,和正在拒絕驗證碼的登入頁面一致。
如果仍然失敗,重新貼上原始 Base32 設定金鑰或 otpauth://totp/ 連結,避免漏字元或複製錯字元。
使用服務頁面顯示的同一組 algorithm、digits 和 period。常見預設值是 SHA-1、6 位、30 秒。
如果 2FA 被重置、遷移或刪除,舊 secret 可能已經失效。請使用恢復碼或聯絡服務管理員。
最常見原因是裝置時間偏移、使用了錯誤帳號的 secret、設定金鑰複製錯誤,或 TOTP 參數和服務端不一致。
有影響。驗證碼在時間視窗末尾產生時,可能在服務端驗證前已經過期。等待新的驗證碼通常能解決偶發失敗。
通常不能。TOTP 驗證碼有效時間很短,而且許多服務會拒絕重複使用已經成功驗證過的驗證碼。
它們可能使用了不同的設定 secret、帳號標籤、演算法、位數、週期或裝置時間。需要對照原始設定金鑰和參數。
不能。有效的 TOTP 驗證碼必須有共享設定 secret。secret 遺失時,請使用備用恢復碼或帳號服務商的恢復流程。