이 페이지에서는 다음과 같은 유형의 오류에 대한 일반적인 Google 클래스룸 API 오류 메시지, 문제, 가능한 조치를 설명합니다.
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
사용자가 한도에 도달했거나 애플리케이션 상태(예: CourseNotModifiable
)로 인해 허용되지 않는 작업을 시도하면 FAILED_PRECONDITION
이 반환됩니다. FAILED_PRECONDITION
를 수정하려면 사용자에게 조치를 취한 다음 다시 시도하도록 안내합니다. 또는 경우에 따라 대체 엔드포인트를 사용하여 사용자를 대신하여 상태를 수정할 수도 있습니다.
AttachmentNotVisible
AttachmentNotVisible
는 지정된 하나 이상의 첨부파일이 사용자에게 표시되지 않거나 요청된 유형이 아니거나 존재하지 않음을 나타냅니다. 예를 들어 사용자와 공유되지 않은 Drive 항목은 이 오류를 반환합니다.
가능한 조치: 실패의 원인을 설명하고 사용자가 포함한 식별자(예: Drive 파일 ID)를 다시 확인하도록 제안합니다. 또한 사용자에게 첨부파일을 볼 수 있는 적절한 권한이 있는지 확인합니다.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
는 강의 Drive 폴더의 소유자를 삭제할 수 없음을 나타냅니다.
가능한 조치: 실패 원인을 설명하고 사용자가 과정 Drive 폴더의 소유권을 다른 사용자에게 이전한 후 다시 시도해 보라고 제안합니다.
CannotRemoveCourseOwner
CannotRemoveCourseOwner
은 강의 소유자를 삭제할 수 없음을 나타냅니다.
가능한 조치: 실패 원인을 설명하고 강의 소유자가 삭제되지 않을 수 있다고 제안합니다. 대부분의 경우 사용자가 자신을 삭제하려고 시도하지만 이는 허용되지 않습니다.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
는 이 수업의 소유권 이전이 아직 진행 중이므로 강의 소유자를 삭제할 수 없음을 나타냅니다.
가능한 조치: 실패의 원인을 설명하고 클래스 소유권 이전의 비동기 작업이 완료될 때까지 잠시 기다린 후 다시 시도해 보라고 제안합니다.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
는 소유자가 없는 강의에서 교사를 삭제할 수 없음을 나타냅니다.
가능한 조치: 실패의 원인을 설명하고 교사가 삭제되지 않을 수 있다고 제안합니다. 대부분의 경우 과정 소유자의 사용자 계정이 삭제되어 과정 상태가 잘못되었습니다.
CourseMemberLimitReached
CourseMemberLimitReached
는 시도한 작업이 허용되는 최대 과정 회원 수를 초과함을 나타냅니다. 이 코드는 일반적으로 students.create()
에서 반환합니다. 자세한 내용은 수업에 학생 초대하기 고객센터 도움말의 '수업 규모 제한' 섹션을 참고하세요.
가능한 조치: 실패의 원인을 설명하고 사용자에게 불필요한 과정 구성원을 삭제하도록 제안합니다.
CourseNotModifiable
CourseNotModifiable
는 관련 과정이 속성을 수정할 수 없는 상태 (과정 상태 자체 제외)임을 나타냅니다.
가능한 조치: 사용자에게 수업을 수정 가능한 수업 상태로 변경하라는 메시지를 표시합니다. 상태를 변경하려면 courses.patch()
를 사용하세요.
과정 상태는 다른 속성을 변경하는 요청에서 변경할 수 있습니다.
CourseTeacherLimitReached
CourseTeacherLimitReached
는 요청된 작업이 허용되는 최대 과정 교사 수를 초과함을 나타냅니다. 이 코드는 일반적으로 teachers.create()
에서 반환합니다.
자세한 내용은 수업에 공동 교사 추가하기 고객센터 도움말의 '수업 규모 제한' 섹션을 참고하세요.
가능한 조치: 실패의 원인을 설명하고 사용자에게 불필요한 과정 강사를 삭제하도록 제안합니다. 앱에 해당하는 경우 teachers.delete()를 사용하여 사용자를 대신하여 교사 명단을 관리할 수 있습니다.
InactiveCourseOwner
InactiveCourseOwner
는 과정 소유자의 계정이 삭제되어 요청된 작업이 허용되지 않음을 나타냅니다. 요청된 조치를 취하기 전에 강의 소유자의 관리자가 강의 소유자의 계정을 복원해야 합니다.
가능한 조치: 실패의 원인을 설명하고 관리자가 작업을 다시 시도하기 전에 강의 소유자의 계정을 복원하도록 제안합니다.
IneligibleOwner
IneligibleOwner
는 사용자가 공동 교사가 아니므로 과정의 소유자로 추가할 수 없음을 나타냅니다.
가능한 조치: 실패의 원인을 설명합니다. 요청하는 사용자가 관리자가 아닌 경우 소유자를 업데이트하기 전에 먼저 사용자에게 과정의 강사로 초대하는 이메일을 보내라고 제안합니다. 요청하는 사용자가 관리자인 경우 먼저 사용자를 과정의 공동 교사로 추가하도록 제안합니다.
PendingInvitationExists
PendingInvitationExists
는 이미 다른 사용자가 과정 소유권을 갖도록 초대되었음을 나타냅니다. 이 오류는 이전이 이전에 시작되었지만 새 소유자가 아직 수락하지 않은 경우 과정 소유권 이전 중에 발생합니다.
UserCannotOwnCourse
UserCannotOwnCourse
는 사용자를 과정의 소유자로 추가할 수 없음을 나타냅니다.
가능한 조치: 실패의 원인을 설명하고 사용자를 과정 소유자로 하여 과정을 만들 수 없다고 제안합니다. 관리자가 아닌 요청 사용자가 본인이 아닌 다른 사용자를 소유자로 하여 코스를 만들려고 하면 이 오류가 표시될 수 있습니다. 소유자로 지정된 사용자 계정이 없거나 사용자가 도메인에 속하지 않는 경우 사용자를 요청하는 관리자에게 이 오류가 표시될 수 있습니다.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
는 사용자가 이미 허용된 최대 그룹 수의 회원이므로 강의에 참여할 수 없음을 나타냅니다. 이 코드는 일반적으로 students.create()
또는 teachers.create()
에서 반환됩니다.
자세한 내용은 수업에 학생 초대하기 고객센터 도움말의 '수업 규모 제한' 섹션을 참고하세요.
가능한 조치: 실패의 원인을 설명하고 사용자가 참여하지 않는 강의를 나가도록 제안합니다. 더 많은 과정에 참여해야 하는 경우 사용자는 계정을 추가로 만드는 것이 좋습니다. 앱에 해당하는 경우 students.create()
또는 teachers.delete()
를 사용하여 사용자를 대신하여 명단을 관리할 수 있습니다.
HTTP 403: PERMISSION_DENIED
최종 사용자가 액세스 기본 요건을 충족하지 않으면 모든 Classroom API 메서드가 PERMISSION_DENIED
(HTTP 403) 오류를 반환할 수 있습니다. 오류와 함께 표시되는 메시지에는 원인을 파악하고 사용자에게 적절한 조치를 취하도록 안내하는 데 도움이 되는 오류 메시지가 포함됩니다.
다음 섹션에서는 일반적인 Classroom API 오류 메시지를 설명합니다.
CannotDirectAddUser
CannotDirectAddUser
는 사용자를 과정에 직접 추가할 수 없음을 나타냅니다. 이 코드는 도메인 관리자가 사용자를 과정에 추가하려고 할 때 사용자에게 이메일 주소가 없거나 도메인에 속하지 않는 경우에 발생합니다.
가능한 조치: 실패의 원인을 설명하고 도메인 관리자에게 사용자 계정이 존재하며 과정 관리자의 도메인 내에 있는지 확인해 보라고 제안합니다.
ClassroomApiDisabled
ClassroomApiDisabled
는 요청하는 사용자에게 Classroom API에 대한 액세스 권한이 없음을 나타냅니다.
가능한 조치: 사용자에게 클래스룸 데이터 액세스 사용 설정에 관한 안내를 안내합니다. 사용자가 잘못된 계정을 사용하고 있을 수 있으므로 ClassroomDisabled도 참고하세요.
ClassroomDisabled
ClassroomDisabled
는 요청하는 사용자가 클래스룸에 액세스할 수 없음을 나타냅니다.
가능한 조치: 사용자에게 클래스룸 액세스 사용 설정에 관한 안내를 안내합니다. 사용자가 잘못된 계정을 사용하고 있을 수도 있으므로 사용자가 올바른 계정을 선택할 수 있도록 여러 계정 사용 링크를 제공할 수도 있습니다.
ExpiredAddOnToken
ExpiredAddOnToken
는 API를 호출하는 데 사용되는 부가기능 토큰이 만료되었음을 나타냅니다.
가능한 조치: 요청 URL에서 새 addOnToken
쿼리 매개변수를 가져올 수 있도록 사용자에게 페이지를 새로고침하거나 부가기능에 다시 로그인하라는 메시지를 표시합니다.
InvalidAddOnToken
InvalidAddOnToken
는 요청에 전달된 부가기능 토큰이 과제에 부가기능 첨부파일을 만들 권한이 없음을 나타냅니다.
가능한 조치: 사용자가 클래스룸의 계정과 다른 계정으로 부가기능에 로그인하면 이 오류가 발생할 수 있습니다. 사용자에게 브라우저에서 다른 모든 계정에서 로그아웃하거나 시크릿 Chrome 창에서 클래스룸을 열라고 안내합니다.
ProjectPermissionDenied
ProjectPermissionDenied
는 요청에서 다른 Developer Console 프로젝트와 연결된 리소스를 수정하려고 시도했음을 나타냅니다.
가능한 조치: 애플리케이션이 의도한 요청을 할 수 없음을 나타냅니다. 리소스를 만든 OAuth 클라이언트 ID의 Developer Console 프로젝트에서만 만들 수 있습니다.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
는 요청하는 사용자 또는 강의 소유자에게 적절한 Google Workspace for Education 라이선스가 없는 강의에서 평가 기간 설정을 수정하려고 시도한 요청임을 나타냅니다.
가능한 조치: 요청하는 사용자 또는 과정 소유자의 라이선스 상태로 인해 애플리케이션이 평가 기간 설정을 업데이트하기 위한 의도된 요청을 할 수 없음을 나타냅니다. Google 관리 콘솔에서 라이선스를 할당할 수 있습니다.
HTTP 429: RESOURCE_EXHAUSTED
할당량이나 서버 용량과 같은 일부 리소스가 소진되어 요청된 작업이 허용되지 않을 때 RESOURCE_EXHAUSTED
이 반환됩니다. 이러한 유형의 요청 오류는 일반적으로 앱에서 과도한 부하를 발생시켰기 때문에 발생합니다.
이러한 한도가 트리거되지 않도록 하고 애플리케이션의 안정성을 높이려면 재시도 메커니즘을 사용하세요. 유효한 재시도 메커니즘은 다음과 같습니다.
잘린 지수 백오프를 사용하여 요청을 재시도하고 동시 실행 환경에서 요청 처리량을 극대화합니다.
충돌을 방지하려면 지터링이 있는 잘린 지수 백오프를 고려하세요. 지터를 도입하면 요청 급증을 분산시키는 무작위 지연을 도입하여 요청이 더 빨리 처리될 수 있습니다.
할당량 제한으로 인해 애플리케이션에서 RESOURCE_EXHAUSTED
오류를 반환하는 경우 할당량 증가를 제출하세요. 자세한 내용은 Monitor API 할당량 고객센터 도움말을 참고하세요.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
는 사용자가 이미 하루에 허용되는 최대 수의 강의에 참여했음을 나타냅니다. 자세한 내용은 그룹스 정책 및 한도 이해하기 고객센터 도움말의 '그룹 초대 및 규모' 섹션을 참고하세요.
가능한 조치: 실패의 원인을 설명하고 사용자에게 1일 후에 과정에 참여하도록 제안합니다.
HTTP 500: INTERNAL
INTERNAL
는 요청을 처리하는 중에 예기치 않은 오류가 발생했음을 나타냅니다. INTERNAL
요청 오류는 지수 백오프를 사용하여 요청을 재시도하는 것으로도 종종 해결할 수 있습니다. INTERNAL
오류가 계속되면 Classroom API 공개 Issue Tracker에서 버그를 신고하여 신고할 수 있습니다.