错误可能发生在不同的层。您可能会收到不同类型的通知,具体取决于错误发生的位置。
必需的 OAuth 参数
如果您忘记设置必需的 OAuth 参数(例如 client_id 或 scope),则会在浏览器的 JavaScript 控制台中看到错误消息。

修复 OAuth 配置错误
可能需要在 Google API 控制台中进行更改,才能解决某些错误。
- 如果尚未创建,则创建客户端 ID。
- 对于弹出式用户体验,请将可能触发当前流程的所有网域添加到
Authorized JavaScript origins
。 - 对于重定向用户体验,请将可能接收授权响应的所有网址添加到
Authorized redirect URIs
。 - 正确配置 OAuth 同意屏幕。
- 根据需要提交应用以供验证。
- 您可能需要采取额外措施来遵守 Google 的 OAuth 2.0 政策。
OAuth 参数值无效
如果您为 OAuth 参数设置了无效值(例如无效的客户端 ID、范围标识符或响应类型值),则会看到 OAuth 错误页面。

OAuth 错误响应
OAuth 可能会返回错误响应,在这种情况下,您的 callback
函数将以错误响应作为参数触发。以下是 OAuth 错误响应示例。
{ "error":"access_denied" }
以下是一些示例:
- 用户拒绝 OAuth 请求。
- 对于包含
prompt=none
参数的 OAuth 请求,用户尚未通过身份验证,并且尚未针对所请求的范围预配置同意情况。
此示例展示了如何处理成功和错误的 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
});