Xử lý lỗi

Lỗi có thể xảy ra ở nhiều lớp. Bạn có thể nhận được thông báo theo nhiều cách tuỳ thuộc vào vị trí xảy ra lỗi.

Thiếu các tham số OAuth bắt buộc

Nếu quên đặt các thông số OAuth bắt buộc, chẳng hạn như client_id hoặc phạm vi, bạn sẽ thấy thông báo lỗi như bên dưới trong Bảng điều khiển JavaScript của trình duyệt.

Lỗi trong bảng điều khiển JavaScript

Khắc phục lỗi cấu hình OAuth

Bạn có thể cần thực hiện thay đổi trong Google API Console để giải quyết một số lỗi.

Giá trị thông số OAuth không hợp lệ

Nếu đặt các giá trị không hợp lệ thành thông số OAuth, chẳng hạn như mã ứng dụng không hợp lệ, giá trị nhận dạng phạm vi hoặc giá trị loại phản hồi, bạn sẽ thấy trang lỗi OAuth.

Lỗi OAuth

Phản hồi lỗi OAuth

OAuth có thể trả về một phản hồi lỗi, trong trường hợp đó, hàm callback sẽ được kích hoạt bằng phản hồi lỗi làm tham số. Sau đây là ví dụ về phản hồi lỗi OAuth.

  {
    "error":"access_denied"
  }

Dưới đây là một số ví dụ.

  1. Người dùng từ chối yêu cầu OAuth.
  2. Đối với yêu cầu OAuth có thông số prompt=none, người dùng chưa được xác thực và chưa định cấu hình trước sự đồng ý cho các phạm vi được yêu cầu.

Ví dụ dưới đây cho biết cách xử lý phản hồi OAuth thành công và lỗi.

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

Lỗi không phải lỗi OAuth

OAuth không xác định các hành vi khi:

  1. cửa sổ bật lên không mở được.
  2. cửa sổ bật lên sẽ đóng trước khi phản hồi OAuth được trả về.

Thư viện này ghi lại các lỗi này và kích hoạt error_callback nếu được đặt. Hãy nhớ kiểm tra loại lỗi như bên dưới. Nếu không, logic mã của bạn có thể bị ảnh hưởng khi thư viện này hỗ trợ các loại lỗi mới sau này.

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
});