Lỗi có thể xảy ra trong các lớp khác nhau. Tuỳ thuộc vào nơi xảy ra lỗi, bạn có thể nhận được thông báo theo nhiều cách.
Thiếu tham số OAuth bắt buộc
Nếu quên đặt các tham 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.
Khắc phục lỗi cấu hình OAuth
Bạn có thể cần phải thay đổi các thay đổi trong Bảng điều khiển API của Google để giải quyết một số lỗi.
- Tạo mã ứng dụng khách nếu chưa có.
- Đối với trải nghiệm người dùng bật lên, hãy thêm tất cả các miền có thể kích hoạt luồng hiện tại vào
Authorized JavaScript origins
. - Đối với trải nghiệm người dùng chuyển hướng, hãy thêm tất cả URL có thể nhận được phản hồi uỷ quyền vào
Authorized redirect URIs
. - Định cấu hình màn hình Đồng ý OAuth đúng cách.
- Gửi ứng dụng của bạn để xác minh nếu cần.
- Có thể bạn cần thực hiện thêm các bước để tuân thủ Chính sách OAuth 2.0 của Google.
Giá trị tham số OAuth không hợp lệ
Nếu đặt các giá trị không hợp lệ thành tham số OAuth, chẳng hạn như mã ứng dụng khách, giá trị nhận dạng phạm vi hoặc giá trị loại phản hồi không hợp lệ, thì bạn sẽ thấy trang 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
của bạn sẽ được kích hoạt với phản hồi lỗi dưới dạng tham số. Sau đây là ví dụ về phản hồi lỗi OAuth.
{ "error":"access_denied" }
Một số ví dụ được liệt kê như sau.
- Người dùng từ chối yêu cầu OAuth.
- Đối với một yêu cầu OAuth có tham số
prompt=none
, người dùng chưa được xác thực và chưa định cấu hình sẵn sự đồng ý cho các phạm vi yêu cầu.
Ví dụ dưới đây cho thấy 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 về OAuth
OAuth không xác định các hành vi khi:
- không mở được cửa sổ bật lên.
- cửa sổ bật lên đóng trước khi phản hồi OAuth được trả về.
Thư viện này ghi lại những lỗi này và kích hoạt error_callback
nếu được đặt. Nhớ kiểm tra loại lỗi như bên dưới. Nếu không, logic của mã 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
});