Coexistence 註冊後出現「此授權碼已過期」
Meta 的 Embedded Signup 完成後,會向啟動流程的平台交出一個短效代碼,平台必須在 30 秒內將它兌換成存取權杖。若兌換得太遲,或使用了先前嘗試留下的代碼,Meta 就會回覆授權碼已過期。重新執行流程即可取得新代碼。
Meta 為 Embedded Signup 返回的可兌換權杖代碼設定的存活時間。
Meta 指明權杖兌換必須是伺服器對伺服器的請求,不可在客戶端進行。
平台完成接入後,須在此時間內同步 Coexistence 號碼的歷史記錄,否則流程要重做。
過期的是哪一個代碼?
商家完成 Embedded Signup 後,Meta 會將資產 ID 和一個可兌換權杖的代碼返回給開啟彈出視窗的瀏覽器視窗。平台再將該代碼傳送到自己的伺服器,由伺服器以應用程式 ID 和應用程式密鑰呼叫 Meta 的 oauth access_token 端點,把它兌換成商家權杖。
Meta 的實作指南對時限說得很清楚:可兌換權杖的代碼存活時間為 30 秒,因此平台必須在它過期前完成兌換。超過這個時間才嘗試兌換,請求會被拒絕,而「此授權碼已過期」就是這次拒絕的顯示方式。商家慢慢完成彈出視窗並沒有做錯任何事;計時是從代碼返回的一刻開始。
為甚麼彈出視窗拖延完成或重複執行後會出現?
有幾種情況會令兌換超出時限。
流程完成時,瀏覽器分頁留在背景,或手提電腦進入休眠,代碼在發出很久之後才到達平台的伺服器。平台的伺服器把兌換排在其他工作之後,沒有立即處理。又或者使用者開啟了兩次流程並且都完成了,而平台在第二個視窗完成後,才去兌換第一個視窗的代碼。
測試時還有第四種:從瀏覽器主控台複製代碼,再用 cURL 或 Postman 手動兌換。Meta 的指南正正警告過這一點,並建議在開始前先備妥兌換請求。
如何完成連接?
在單一視窗內從頭再執行一次流程,並讓平台的頁面保持在前景直至完成。每次完成都會返回新代碼,平台只需盡快兌換這個代碼即可。
如果是 Coexistence 號碼,更要盡快處理。商家完成流程時,Meta 會轉換 WhatsApp Business 帳戶;平台接入客戶後有 24 小時同步訊息歷史記錄,過了這段時間,商家就必須先解除接入,再重新完成流程。
在平台一方,根本的解決辦法是代碼一到達,就先在伺服器上兌換,然後才進行任何其他接入步驟。
常見錯誤
- 用同一個代碼重試權杖兌換。它在 30 秒後已經過期,不會復原。
- 同時在兩個視窗執行註冊。只有正在兌換的那次嘗試所產生的代碼才有效。
- 在瀏覽器內兌換代碼。Meta 要求以應用程式密鑰,透過伺服器對伺服器的請求進行兌換。
Embedded Signup 一返回代碼,EasyCoexistence 就在自己的伺服器上兌換,並把每次嘗試記錄在連接時間線上,所以遺失的代碼會顯示為有日期的事件,而不是含糊的失敗。
常見問題
商家到底有沒有連接好號碼?
商家已完成 Meta 的流程,但平台未能把代碼變成可用的權杖,所以暫時還不能對該號碼執行操作。重新執行流程就會得到新代碼。
代碼的有效時間可以延長嗎?
不可以。30 秒的存活時間由 Meta 設定,沒有任何平台可以延長。
WhatsApp Business 應用程式會受影響嗎?
不會。問題處理期間,應用程式仍可在手機上正常使用。
這和已過期的存取權杖是同一回事嗎?
不是。這裡指的是短效的註冊代碼。運作中連接的存取權杖過期,會返回錯誤 190。
繼續閱讀
準備開始嗎?
幾分鐘內設定 WhatsApp Coexistence,而非幾個月。應用程式在手機上仍可繼續運作。
開始免費試用驗證日期