Thông báo lỗi thường gặp về API Google Lớp học

Trang này mô tả một số thông báo lỗi, vấn đề thường gặp và các hành động có thể thực hiện đối với các loại lỗi sau:

HTTP 400: FAILED_PRECONDITION

FAILED_PRECONDITION đượ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 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ế để thay mặt người dùng khắc phục trạng thái.

AttachmentNotVisible

AttachmentNotVisible cho biết một hoặc nhiều tệp đính kèm được chỉ định không hiển thị với 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.

Thao tác có thể thực hiện: Mô tả nguyên nhân của lỗi và đề xuất người dùng kiểm tra lại các giá trị nhận dạng (chẳng hạn như mã tệp trên Drive) mà họ đã thêm. 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 Drive của khoá học.

Hành động có thể thực hiện: Mô tả nguyên nhân dẫn đến 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 sang 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 dẫn đến lỗi và đề xuất rằng bạn không thể xoá chủ sở hữu khoá học. Trong hầu hết các trường hợp, người dùng đang cố gắng tự xoá mình, điều này không được phép.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete cho biết rằng 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à đề xuất người dùng đợi vài phút để hoàn tất thao tác chuyển quyền sở hữu lớp không đồng bộ, sau đó thử lại.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner cho biết bạn không thể xoá giáo viên khỏi khoá học không có chủ sở hữu.

Hành động có thể thực hiện: Mô tả nguyên nhân khiến bạn không thể xoá giáo viên và đề xuất rằng bạn không thể xoá giáo viên. 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á, khiến trạng thái khoá học không hợp lệ.

CourseMemberLimitReached

CourseMemberLimitReached cho biết hành động đã thực hiện sẽ vượt quá số lượng thành viên tối đa được phép của 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ề số lượng học viên trong lớp" 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 dẫn đến 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ừ chính trạng thái khoá học).

Hành động có thể thực hiện: Đề nghị 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 khoá học trong một 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 giáo viên khoá học tối đa được phép. 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ề số lượng học viên trong 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 dẫn đến lỗi và đề xuất người dùng xoá những giáo viên không cần thiết của khoá học. Nếu ứng dụng của bạn có thể sử dụng, bạn có thể dùng phương thức teachers.delete() để thay mặt người dùng quản lý danh sách giáo viên.

CourseTopicLimitReached

CourseTopicLimitReached cho biết rằng hành động được yêu cầu sẽ vượt quá số 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 dẫn đến lỗi và đề xuất người dùng xoá các chủ đề không cần thiết. Nếu ứng dụng của bạn có thể sử dụng, bạn có thể dùng phương thức courses.topics.delete() để thay mặt người dùng quản lý các chủ đề.

InactiveCourseOwner

InactiveCourseOwner cho biết rằng hành động được yêu cầu không được phép 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 dẫn đến lỗi và đề xuất 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 rằng 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à đồng giáo viên.

Thao tác có thể thực hiện: Mô tả nguyên nhân gây ra lỗi. Nếu người dùng yêu cầu không phải là quản trị viên, trước tiên, hãy đề xuất họ gửi lời mời người dùng làm 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, trước tiên, họ nên thêm người dùng đó làm người cùng dạy của khoá học.

PendingInvitationExists

PendingInvitationExists cho biết một người nào đó đã được mời nhận quyền 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 đã bắt đầu nhưng chưa được chủ sở hữu mới chấp nhận.

UserCannotOwnCourse

UserCannotOwnCourse cho biết rằng 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 với người dùng là chủ sở hữu khoá học. Người dùng không phải quản trị viên yêu cầu có thể gặp 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. Người dùng yêu cầu quản trị viên có thể thấy 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ố 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ề số lượng học viên trong lớp" 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 dẫn đến lỗi và đề xuất 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 tạo thêm một tài khoản nếu cần tham gia nhiều khoá học hơn. Nếu ứng dụng của bạn có thể sử dụng, bạn có thể dùng students.create() hoặc teachers.delete() để thay mặt người dùng quản lý danh sách.

HTTP 403: PERMISSION_DENIED

Tất cả phương thức 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 lỗi chứa 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 API Lớp học.

CannotDirectAddUser

CannotDirectAddUser cho biết không thể thêm người dùng trực tiếp vào khoá học. Mã này xảy ra khi quản trị viên miền cố gắng thêm người dùng vào một khoá học và người dùng đó không có địa chỉ email hoặc không thuộc miền.

Thao tác 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 xem tài khoản người dùng có tồn tại và nằm trong miền của quản trị viên khoá học hay không.

ClassroomApiDisabled

ClassroomApiDisabled cho biết rằng người dùng yêu cầu không có quyền truy cập vào API Lớp học.

Thao tác có thể thực hiện: Hướng 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. Ngoài ra, hãy xem ClassroomDisabled vì người dùng có thể đang sử dụng sai tài khoản.

ClassroomDisabled

ClassroomDisabled cho biết rằng người dùng yêu cầu không có quyền truy cập vào Lớp học.

Thao tác có thể thực hiện: Hướng dẫn người dùng 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 phần 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 lệnh gọi đến API đã hết hạn.

Thao tác 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 uỷ quyền để tạo tệp đính kèm tiện ích bổ sung trên bài tập.

Thao tác 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ả tài khoản khác trong trình duyệt hoặc mở Google Lớp học 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 liên kết với một dự án khác trong Developer Console.

Thao tác 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 khách OAuth đã tạo tài nguyên mới có thể tạo mã này.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings cho biết rằng yêu cầu đã cố gắng sửa đổi chế độ cài đặt khoảng thời gian 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 thích hợp.

Hành động có thể thực hiện: 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 khoảng thời gian chấm điểm do trạng thái cấp phép của người dùng yêu cầu hoặc chủ sở hữu 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. Các 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 quá nhiều tải.

Để tránh kích hoạt các 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. Sau đây là một số cơ chế thử lại hợp lệ:

  • Sử dụng thuật toán thời gian đợi lũy 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 thời gian đợi luỹ thừa bị cắt bớt với độ trễ. Việc giới thiệu độ trễ 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 giảm 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 các giới hạn về 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 trong 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à số lượng thành viên" 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 dẫn đến lỗi và đề xuất 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 thường có thể giải quyết 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 lỗi bằng cách gửi lỗi trên công cụ theo dõi lỗi công khai của API Lớp học.