이 페이지에서는 다음과 같은 유형의 오류에 대한 일반적인 Google Classroom 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()
메서드를 사용하여 사용자를 대신하여 교사 명단을 관리할 수 있습니다.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl
는 요청된 작업이 과정 제목에 URL을 도입하므로 허용되지 않음을 나타냅니다. 과정 제목에는 URL 패턴이 지원되지 않습니다.
가능한 조치:
실패 원인을 설명하고 사용자에게 title
필드에서 URL 패턴을 삭제하도록 제안합니다. description
필드에서는 URL이 허용됩니다.
CourseTopicLimitReached
CourseTopicLimitReached
은 요청된 작업이 과정에서 허용되는 최대 주제 수를 초과함을 나타냅니다. 이 코드는 일반적으로 courses.topics.create()
메서드에 의해 반환됩니다.
가능한 조치:
실패 원인을 설명하고 사용자에게 불필요한 주제를 삭제하도록 제안합니다. 앱에 적용되는 경우 courses.topics.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
는 요청하는 사용자에게 클래스룸 API에 대한 액세스 권한이 없음을 나타냅니다.
가능한 조치: 사용자에게 클래스룸 데이터 액세스 사용 설정에 관한 안내를 제공합니다. 사용자가 잘못된 계정을 사용하고 있을 수 있으므로 ClassroomDisabled도 참고하세요.
ClassroomDisabled
ClassroomDisabled
는 요청하는 사용자에게 클래스룸에 대한 액세스 권한이 없음을 나타냅니다.
가능한 조치: 사용자에게 클래스룸 액세스 사용 설정에 관한 안내를 안내합니다. 사용자가 잘못된 계정을 사용하고 있을 수도 있으므로 사용자가 올바른 계정을 선택할 수 있도록 여러 계정 사용에 대한 링크를 제공할 수도 있습니다.
ExpiredAddOnToken
ExpiredAddOnToken
는 API를 호출하는 데 사용되는 부가기능 토큰이 만료되었음을 나타냅니다.
가능한 조치: 요청 URL에서 새 addOnToken
쿼리 매개변수를 가져올 수 있도록 사용자에게 페이지를 새로고침하거나 부가기능에 다시 로그인하라는 메시지를 표시합니다.
InvalidAddOnToken
InvalidAddOnToken
는 요청에 전달된 부가기능 토큰에 과제에 부가기능 첨부파일을 만들 권한이 없음을 나타냅니다.
가능한 조치: 사용자가 클래스룸의 계정과 다른 계정으로 부가기능에 로그인하면 이 오류가 발생할 수 있습니다. 사용자에게 브라우저에서 다른 모든 계정에서 로그아웃하거나 시크릿 Chrome 창에서 Classroom을 열도록 안내합니다.
ProjectPermissionDenied
ProjectPermissionDenied
는 요청이 다른 개발자 콘솔 프로젝트와 연결된 리소스를 수정하려고 시도했음을 나타냅니다.
가능한 조치: 애플리케이션에서 의도한 요청을 할 수 없음을 나타냅니다. 리소스가 생성된 OAuth 클라이언트 ID의 개발자 콘솔 프로젝트에서만 만들 수 있습니다.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
는 요청한 사용자 또는 수업 소유자에게 적절한 Google Workspace for Education 라이선스가 없거나 요청한 사용자가 수업 교사 또는 도메인 관리자가 아닌 수업에서 성적 기간 설정을 수정하려고 시도했음을 나타냅니다.
가능한 조치: 라이선스 또는 과정 역할 상태로 인해 애플리케이션이 성적 기간 설정을 업데이트하는 의도된 요청을 할 수 없음을 나타냅니다. 라이선스는 Google 관리 콘솔에서 할당할 수 있습니다.
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
는 할당량이나 서버 용량과 같은 일부 리소스가 소진되어 요청된 작업을 허용할 수 없는 경우 반환됩니다. 이러한 유형의 요청 오류는 일반적으로 앱에서 과도한 부하를 생성했기 때문에 발생합니다.
이러한 한도를 트리거하지 않고 애플리케이션의 안정성을 높이려면 재시도 메커니즘을 사용하세요. 유효한 재시도 메커니즘에는 다음이 포함됩니다.
잘린 지수 백오프를 사용하여 요청을 재시도하고 동시 환경에서 요청 처리량을 최대화합니다.
충돌을 방지하려면 지터가 있는 잘린 지수 백오프를 고려하세요. 지터를 도입하면 요청 급증을 분산하는 무작위 지연이 도입되어 요청이 더 빠르게 성공할 수 있습니다.
할당량 제한으로 인해 애플리케이션에서 RESOURCE_EXHAUSTED
오류가 반환되는 경우 할당량 증가를 제출하세요. 자세한 내용은 API 할당량 모니터링 고객센터 도움말을 참고하세요.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
는 사용자가 이미 하루에 허용된 최대 수의 강의에 참여했음을 나타냅니다. 자세한 내용은 그룹스 정책 및 한도 이해하기 고객센터 도움말의 '그룹 초대 및 크기' 섹션을 참고하세요.
가능한 조치: 실패 원인을 설명하고 사용자에게 과정을 수강하기 전에 하루를 기다리라고 제안합니다.
HTTP 500: INTERNAL
INTERNAL
는 요청을 처리하는 중에 예기치 않은 오류가 발생했음을 나타냅니다. INTERNAL
요청 오류는 지수 백오프를 사용하여 요청을 재시도하면 해결되는 경우가 많습니다. INTERNAL
오류가 계속되면 Classroom API 공개 문제 추적기에 버그를 신고하여 보고할 수 있습니다.