處理錯誤

錯誤可能發生在不同的圖層。您可能會透過不同方式接收通知,具體取決於錯誤發生的位置。

缺少必要的 OAuth 參數

如果您忘記設定必要的 OAuth 參數 (例如 client_id 或範圍),瀏覽器的 JavaScript 主控台就會顯示下列錯誤訊息。

JavaScript 控制台錯誤

修正 OAuth 設定錯誤

您可能需要在 Google API 控制台中進行變更,才能解決某些錯誤。

OAuth 參數值無效

如果您將無效值設為 OAuth 參數 (例如無效的用戶端 ID、範圍 ID 或回應類型值),就會看到 OAuth 錯誤頁面。

OAuth 錯誤

OAuth 錯誤回應

OAuth 可能會傳回錯誤回應,在這種情況下,系統會觸發 callback 函式,並將錯誤回應做為參數。以下是 OAuth 錯誤回應範例。

  {
    "error":"access_denied"
  }

以下列舉幾個範例。

  1. 使用者拒絕 OAuth 要求。
  2. 如果 OAuth 要求含有 prompt=none 參數,表示使用者尚未通過驗證,且尚未預先設定所要求的範圍同意聲明。

以下範例說明如何處理成功和錯誤的 OAuth 回應。

function myCallback(response) {
  if (response.error) {
    // Handle error response
    ... ...
  } else if (response.code) {
    // Handle success code response
    ... ...
  }
}

非 OAuth 錯誤

OAuth 不會在下列情況下定義行為:

  1. 彈出式視窗無法開啟。
  2. 在傳回 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
});