錯誤可能發生在不同層級。系統會根據發生錯誤的位置,以不同方式通知你。
必要的 OAuth 參數
如果忘記設定必要 OAuth 參數 (例如 client_id 或 scope),瀏覽器的 JavaScript 控制台中會顯示錯誤訊息。

修正 OAuth 設定錯誤
如要解決部分錯誤,可能需要在 Google API 控制台中進行變更。
- 如果尚未建立,請建立用戶端 ID。
- 如果是彈出式視窗使用者體驗,請將可能觸發目前流程的所有網域新增至
Authorized JavaScript origins
。 - 如要使用重新導向 UX,請將所有可能收到授權回應的網址新增至
Authorized redirect URIs
。 - 正確設定 OAuth 同意畫面。
- 視需要將應用程式送交驗證。
- 您可能需要採取額外步驟,遵守 Google 的 OAuth 2.0 政策。
OAuth 參數值無效
如果將無效值設為 OAuth 參數 (例如無效的用戶端 ID、範圍 ID 或回應類型值),系統會顯示 OAuth 錯誤頁面。

OAuth 錯誤回應
OAuth 可能會傳回錯誤回應,在這種情況下,系統會以錯誤回應做為參數,觸發 callback
函式。以下是 OAuth 錯誤回應範例。
{ "error":"access_denied" }
例如:
- 使用者拒絕 OAuth 要求。
- 如果 OAuth 要求含有
prompt=none
參數,表示使用者尚未通過驗證,且未預先設定要求範圍的同意聲明。
這個範例說明如何處理 OAuth 成功和錯誤回應:
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
非 OAuth 錯誤
OAuth 不會定義下列情況的行為:
- 彈出式視窗無法開啟。
- 在 OAuth 回應傳回前關閉彈出式視窗。
這個程式庫會擷取這些錯誤,並在設定時觸發 error_callback
。請務必檢查錯誤類型。否則,這個程式庫日後支援新的錯誤類型時,您的程式碼邏輯可能會受到影響。
function myErrorCallback(err) {
if (err.type == 'popup_failed_to_open') {
// The popup window is failed to open
... ...
} else if (err.type == 'popup_closed') {
// The popup window is closed before an OAuth response is returned
... ...
}
}
const client = google.accounts.oauth2.initCodeClient({
client_id: 'YOUR_GOOGLE_CLIENT_ID',
scope: 'https://www.googleapis.com/auth/calendar.readonly',
ux_mode: 'popup',
callback: myCallback,
error_callback: myErrorCallback
});