处理错误

错误可能发生在不同的层。您可能会收到不同类型的通知,具体取决于错误发生的位置。

必需的 OAuth 参数

如果您忘记设置必需的 OAuth 参数(例如 client_id 或 scope),则会在浏览器的 JavaScript 控制台中看到错误消息。

JavaScript 控制台错误

修复 OAuth 配置错误

可能需要在 Google API 控制台中进行更改,才能解决某些错误。

OAuth 参数值无效

如果您为 OAuth 参数设置了无效值(例如无效的客户端 ID、范围标识符或响应类型值),则会看到 OAuth 错误页面。

OAuth 错误

OAuth 错误响应

OAuth 可能会返回错误响应,在这种情况下,您的 callback 函数将以错误响应作为参数触发。以下是 OAuth 错误响应示例。

  {
    "error":"access_denied"
  }

以下是一些示例:

  1. 用户拒绝 OAuth 请求。
  2. 对于包含 prompt=none 参数的 OAuth 请求,用户尚未通过身份验证,并且尚未针对所请求的范围预配置同意情况。

此示例展示了如何处理成功和错误的 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
});