Trang này mô tả một số thông báo lỗi, vấn đề thường gặp và các việc có thể làm đối với các loại lỗi sau của Google Classroom API:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
FAILED_PRECONDITION
sẽ được trả về khi người dùng cố gắng thực hiện một hành động không được phép, có thể là do người dùng đã đạt đến một giới hạn hoặc trạng thái ứng dụng, chẳng hạn như CourseNotModifiable
. Để khắc phục FAILED_PRECONDITION
, hãy hướng dẫn người dùng thực hiện một số hành động rồi thử lại. Hoặc trong một số trường hợp, bạn có thể sử dụng các điểm cuối thay thế để sửa trạng thái thay cho người dùng.
AttachmentNotVisible
AttachmentNotVisible
cho biết một hoặc nhiều tệp đính kèm được chỉ định không hiển thị cho người dùng, không thuộc loại được yêu cầu hoặc không tồn tại. Ví dụ: các mục trên Drive chưa được chia sẻ với người dùng sẽ trả về lỗi này.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề nghị người dùng kiểm tra lại các giá trị nhận dạng mà họ đã thêm, chẳng hạn như mã tệp trên Drive. Ngoài ra, hãy đảm bảo người dùng có quyền thích hợp để xem tệp đính kèm.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
cho biết bạn không thể xoá chủ sở hữu thư mục khoá học trên Drive.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất người dùng chuyển quyền sở hữu thư mục Drive của khoá học cho một người dùng khác rồi thử lại.
CannotRemoveCourseOwner
CannotRemoveCourseOwner
cho biết bạn không thể xoá chủ sở hữu khoá học.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và cho biết rằng chủ sở hữu khoá học có thể không bị xoá. Trong hầu hết các trường hợp, người dùng đang cố gắng xoá chính mình và điều này không được phép.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
cho biết bạn không thể xoá chủ sở hữu khoá học vì quá trình chuyển quyền sở hữu lớp học này vẫn đang diễn ra.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề nghị người dùng đợi một lát để hoàn tất hành động không đồng bộ là chuyển quyền sở hữu lớp học, sau đó thử lại.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
cho biết giáo viên không thể bị xoá khỏi khoá học không có chủ sở hữu.
Việc nên làm: Mô tả nguyên nhân dẫn đến lỗi và cho biết giáo viên có thể không bị xoá. Trong hầu hết các trường hợp, tài khoản người dùng của chủ sở hữu khoá học đã bị xoá, dẫn đến trạng thái khoá học không hợp lệ.
CourseMemberLimitReached
CourseMemberLimitReached
cho biết hành động bạn đang cố gắng thực hiện sẽ vượt quá số lượng thành viên tối đa được phép trong khoá học. Mã này thường do students.create()
trả về. Để biết thêm thông tin, hãy tham khảo phần "Giới hạn về quy mô lớp học" trong bài viết Mời học viên tham gia lớp học trên trung tâm trợ giúp.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất người dùng xoá những thành viên không cần thiết trong khoá học
CourseNotModifiable
CourseNotModifiable
cho biết rằng khoá học có liên quan đang ở trạng thái không cho phép sửa đổi các thuộc tính của khoá học (ngoài trạng thái của khoá học).
Hành động có thể thực hiện: Nhắc người dùng thay đổi khoá học thành trạng thái khoá học có thể sửa đổi. Để thay đổi trạng thái, hãy sử dụng courses.patch()
.
Bạn có thể thay đổi trạng thái của khoá học trong yêu cầu thay đổi các thuộc tính khác.
CourseTeacherLimitReached
CourseTeacherLimitReached
cho biết hành động được yêu cầu sẽ vượt quá số lượng tối đa được phép của giáo viên trong khoá học. Mã này thường được phương thức teachers.create()
trả về.
Để biết thêm thông tin, hãy tham khảo phần "Giới hạn về quy mô lớp học" trong bài viết Thêm người cùng dạy vào lớp học trên trung tâm trợ giúp.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất người dùng xoá những giáo viên không cần thiết trong khoá học. Nếu có thể áp dụng cho ứng dụng của bạn, bạn có thể sử dụng phương thức teachers.delete()
để quản lý danh sách giáo viên thay cho người dùng.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl
cho biết bạn không được phép thực hiện thao tác yêu cầu vì thao tác đó sẽ đưa một URL vào tiêu đề khoá học. Các mẫu URL không được hỗ trợ trong tiêu đề khoá học.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất người dùng xoá mẫu URL khỏi trường title
. Bạn được phép sử dụng URL trong trường description
.
CourseTopicLimitReached
CourseTopicLimitReached
cho biết thao tác được yêu cầu sẽ vượt quá số lượng chủ đề tối đa được phép trong một khoá học. Mã này thường được phương thức courses.topics.create()
trả về.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất người dùng xoá các chủ đề không cần thiết. Nếu có thể áp dụng cho ứng dụng của bạn, bạn có thể sử dụng phương thức courses.topics.delete()
để quản lý các chủ đề thay cho người dùng.
InactiveCourseOwner
InactiveCourseOwner
cho biết bạn không được phép thực hiện hành động đã yêu cầu vì tài khoản của chủ sở hữu khoá học đã bị xoá. Quản trị viên của chủ sở hữu khoá học cần khôi phục tài khoản của chủ sở hữu khoá học trước khi thực hiện hành động được yêu cầu.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất rằng quản trị viên khôi phục tài khoản của chủ sở hữu khoá học trước khi thử lại thao tác.
IneligibleOwner
IneligibleOwner
cho biết bạn không thể thêm người dùng làm chủ sở hữu của khoá học vì người dùng đó không phải là giáo viên đồng hành.
Việc nên làm: Mô tả nguyên nhân dẫn đến lỗi. Nếu người dùng yêu cầu không phải là quản trị viên, hãy đề xuất họ gửi lời mời cho người dùng đó để trở thành giáo viên trong khoá học trước khi cập nhật chủ sở hữu. Nếu người dùng yêu cầu là quản trị viên, hãy đề xuất họ thêm người dùng đó làm người cùng dạy của khoá học trước.
PendingInvitationExists
PendingInvitationExists
cho biết có người đã được mời làm chủ sở hữu khoá học. Lỗi này xảy ra trong quá trình chuyển quyền sở hữu khoá học khi một yêu cầu chuyển quyền sở hữu đã được bắt đầu trước đó nhưng chủ sở hữu mới chưa chấp nhận.
UserCannotOwnCourse
UserCannotOwnCourse
cho biết rằng bạn không thể thêm người dùng làm chủ sở hữu của khoá học.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất rằng không thể tạo khoá học khi người dùng là chủ sở hữu khoá học. Người dùng không phải là quản trị viên có thể gặp phải lỗi này nếu họ cố gắng tạo một khoá học có chủ sở hữu là một người dùng khác chứ không phải chính họ. Quản trị viên yêu cầu người dùng có thể gặp phải lỗi này nếu tài khoản người dùng được chỉ định làm chủ sở hữu không tồn tại hoặc người dùng không thuộc miền của họ.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
cho biết người dùng đã là thành viên của số lượng nhóm tối đa được phép và không thể tham gia bất kỳ khoá học nào. Mã này thường được students.create()
hoặc teachers.create()
trả về.
Để biết thêm thông tin, hãy tham khảo phần "Giới hạn về quy mô lớp học" trong bài viết Mời học viên tham gia lớp học trên trung tâm trợ giúp.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề nghị người dùng rời khỏi mọi khoá học mà họ không tham gia. Người dùng có thể cân nhắc việc tạo một tài khoản khác nếu cần tham gia thêm các khoá học. Nếu có thể áp dụng cho ứng dụng của bạn, bạn có thể sử dụng students.create()
hoặc teachers.delete()
để quản lý danh sách thay mặt cho người dùng.
HTTP 403: PERMISSION_DENIED
Tất cả các phương thức của API Lớp học đều có thể trả về lỗi PERMISSION_DENIED
(HTTP 403) nếu người dùng cuối không đáp ứng các điều kiện tiên quyết để truy cập. Thông báo đi kèm với lỗi chứa một thông báo lỗi để giúp bạn xác định nguyên nhân và hướng dẫn người dùng thực hiện hành động thích hợp.
Các phần sau đây mô tả các thông báo lỗi thường gặp của Classroom API.
CannotDirectAddUser
CannotDirectAddUser
cho biết người dùng không thể được thêm trực tiếp vào khoá học. Mã này xuất hiện khi một quản trị viên miền cố gắng thêm một người dùng vào khoá học và người dùng đó không có địa chỉ email hoặc không thuộc miền.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề xuất quản trị viên miền kiểm tra để đảm bảo tài khoản người dùng tồn tại và nằm trong miền của quản trị viên khoá học.
ClassroomApiDisabled
ClassroomApiDisabled
cho biết người dùng yêu cầu không có quyền truy cập vào API Lớp học.
Hành động có thể thực hiện: Chuyển người dùng đến hướng dẫn về cách bật quyền truy cập vào dữ liệu trên Lớp học. Bạn cũng có thể xem ClassroomDisabled vì người dùng có thể đang sử dụng tài khoản không chính xác.
ClassroomDisabled
ClassroomDisabled
cho biết người dùng yêu cầu không có quyền truy cập vào Lớp học.
Hành động có thể thực hiện: Chuyển người dùng đến hướng dẫn về cách bật quyền truy cập vào Lớp học. Người dùng cũng có thể đang sử dụng sai tài khoản, vì vậy, bạn cũng có thể cung cấp một đường liên kết đến bài viết sử dụng nhiều tài khoản để người dùng có thể chọn đúng tài khoản.
ExpiredAddOnToken
ExpiredAddOnToken
cho biết mã thông báo tiện ích bổ sung đang được dùng để thực hiện các lệnh gọi đến API đã hết hạn.
Hành động có thể thực hiện: Nhắc người dùng làm mới trang hoặc đăng nhập lại vào tiện ích bổ sung để bạn có thể lấy tham số truy vấn addOnToken
mới từ URL yêu cầu.
InvalidAddOnToken
InvalidAddOnToken
cho biết mã thông báo tiện ích bổ sung được truyền trong một yêu cầu không được phép tạo tệp đính kèm của tiện ích bổ sung cho bài tập.
Hành động có thể thực hiện: Lỗi này có thể xảy ra nếu người dùng đăng nhập vào tiện ích bổ sung bằng một tài khoản khác với tài khoản trong Lớp học. Hướng dẫn người dùng đăng xuất khỏi tất cả các tài khoản khác trong trình duyệt hoặc mở Classroom trong cửa sổ ẩn danh của Chrome.
ProjectPermissionDenied
ProjectPermissionDenied
cho biết rằng yêu cầu đã cố gắng sửa đổi một tài nguyên được liên kết với một dự án Developer Console khác.
Hành động có thể thực hiện: Cho biết rằng ứng dụng của bạn không thể thực hiện yêu cầu dự kiến. Chỉ dự án Developer Console của mã ứng dụng OAuth đã tạo tài nguyên mới có thể thực hiện thao tác này.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
cho biết rằng yêu cầu đã cố gắng sửa đổi chế độ cài đặt giai đoạn chấm điểm trong một khoá học mà người dùng yêu cầu hoặc chủ sở hữu khoá học không có giấy phép Google Workspace for Education phù hợp, hoặc người dùng yêu cầu không phải là giáo viên khoá học hay quản trị viên miền.
Việc cần làm: Cho biết rằng ứng dụng của bạn không thể đưa ra yêu cầu dự kiến để cập nhật chế độ cài đặt kỳ chấm điểm do trạng thái cấp phép hoặc vai trò trong khoá học. Bạn có thể chỉ định giấy phép trong Bảng điều khiển dành cho quản trị viên của Google.
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
được trả về khi hành động được yêu cầu không được phép vì một số tài nguyên (chẳng hạn như hạn mức hoặc dung lượng máy chủ) đã hết. Những loại lỗi yêu cầu này thường xảy ra do ứng dụng của bạn tạo ra tải quá mức.
Để tránh kích hoạt những giới hạn này và tăng độ tin cậy của ứng dụng, hãy sử dụng cơ chế thử lại. Các cơ chế thử lại hợp lệ bao gồm:
Sử dụng thuật toán thời gian đợi luỹ thừa bị cắt bớt để thử lại yêu cầu và tối đa hoá thông lượng yêu cầu trong các môi trường đồng thời.
Để tránh xung đột, hãy cân nhắc sử dụng thuật toán thời gian đợi luỹ thừa bị cắt với độ trễ. Việc giới thiệu độ trễ ngẫu nhiên có thể giúp các yêu cầu của bạn thành công nhanh hơn bằng cách giới thiệu độ trễ ngẫu nhiên giúp trải đều các yêu cầu tăng đột biến.
Nếu ứng dụng của bạn trả về lỗi RESOURCE_EXHAUSTED
do hạn mức, hãy gửi yêu cầu tăng hạn mức. Để biết thêm thông tin, hãy tham khảo bài viết Theo dõi hạn mức API trên trung tâm trợ giúp.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
cho biết người dùng đã tham gia số lượng khoá học tối đa được phép trong một ngày. Để biết thêm thông tin, hãy tham khảo phần "Lời mời tham gia nhóm và quy mô nhóm" trong bài viết Tìm hiểu các chính sách và hạn mức của Groups trên trung tâm trợ giúp.
Hành động có thể thực hiện: Mô tả nguyên nhân gây ra lỗi và đề nghị người dùng đợi một ngày trước khi tham gia khoá học.
HTTP 500: INTERNAL
INTERNAL
cho biết đã xảy ra lỗi ngoài dự kiến trong khi xử lý yêu cầu. Bạn cũng có thể giải quyết các lỗi yêu cầu INTERNAL
bằng cách sử dụng thuật toán thời gian đợi luỹ thừa để thử lại yêu cầu. Nếu lỗi INTERNAL
vẫn tiếp diễn, bạn có thể báo cáo bằng cách gửi lỗi trên công cụ theo dõi lỗi công khai của Classroom API.