На этой странице описаны некоторые распространенные сообщения об ошибках API Google Classroom, проблемы и возможные действия для следующих типов ошибок:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
FAILED_PRECONDITION
возвращается, когда пользователь пытается выполнить действие, которое не может быть разрешено либо потому, что пользователь достиг предела, либо из-за состояния приложения, такого как CourseNotModifiable
. Чтобы исправить FAILED_PRECONDITION
, попросите пользователя выполнить какое-либо действие, а затем повторите попытку. Или, в некоторых случаях, вы можете использовать альтернативные конечные точки для фиксации состояния от имени пользователя.
ВложениеNotVisible
AttachmentNotVisible
указывает, что одно или несколько указанных вложений либо не видны пользователю, либо не относятся к запрошенному типу, либо не существуют. Например, эту ошибку будут возвращать объекты на Диске, к которым не был предоставлен доступ пользователю.
Возможное действие : Опишите причину сбоя и предложите пользователю перепроверить включенные в него идентификаторы, такие как идентификаторы файлов на Диске. Кроме того, убедитесь, что у пользователя есть необходимые разрешения для просмотра вложения.
НевозможноRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
указывает, что владельца папки курса на Диске удалить невозможно.
Возможное действие : Опишите причину сбоя и предложите пользователю передать право собственности на папку курса на Диске другому пользователю и повторить попытку.
НевозможноRemoveCourseOwner
CannotRemoveCourseOwner
указывает, что владельца курса нельзя удалить.
Возможное действие : Опишите причину сбоя и предложите не удалять владельца курса. В большинстве случаев пользователь пытается удалить себя, что запрещено.
НевозможноRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
указывает, что владельца курса нельзя удалить, поскольку передача права собственности на этот класс все еще продолжается.
Возможное действие : Опишите причину сбоя и предложите пользователю подождать несколько минут, пока асинхронное действие по передаче владения классом завершится, а затем повторите попытку.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
указывает, что преподавателя нельзя удалить из курса, у которого нет владельца.
Возможные действия : Опишите причину сбоя и предложите не отстранять преподавателя. В большинстве случаев учетная запись владельца курса была удалена, что приводило к недопустимому состоянию курса.
Курсемберлимитдостигнутый
CourseMemberLimitReached
указывает, что предпринятое действие превысит максимально допустимое количество участников курса. Этот код обычно возвращается методом students.create()
Дополнительную информацию см. в разделе «Ограничения на размер класса» статьи Справочного центра «Пригласить учащихся в класс ».
Возможное действие : Опишите причину сбоя и предложите пользователю удалить ненужных участников курса.
КурсНетМодифицируемый
CourseNotModifiable
указывает, что соответствующий курс находится в состоянии, которое не позволяет изменять его свойства (кроме самого состояния курса).
Возможное действие : Предложить пользователю изменить курс на изменяемое состояние курса . Чтобы изменить состояние, используйтеcourses.patch courses.patch()
. Состояние курса можно изменить в запросе, изменяющем другие свойства.
КурсУчительПределдостигнут
CourseTeacherLimitReached
указывает, что запрошенное действие превысит максимально допустимое количество преподавателей курса. Этот код обычно возвращается функцией teachers.create()
. Дополнительную информацию см. в разделе «Ограничения на размер класса» статьи Справочного центра «Добавление преподавателя в класс» .
Возможное действие : Опишите причину сбоя и предложите пользователю удалить ненужных преподавателей курса. Если это применимо к вашему приложению, вы можете использовать Teachers.delete() для управления списками учителей от имени пользователя.
НеактивныйКурсеВладелец
InactiveCourseOwner
указывает, что запрошенное действие не разрешено, поскольку учетная запись владельца курса удалена. Прежде чем предпринять запрошенное действие, администратору владельца курса необходимо восстановить учетную запись владельца курса.
Возможное действие : Опишите причину сбоя и предложите администратору восстановить учетную запись владельца курса, прежде чем повторять операцию.
Неправомочный владелец
IneligibleOwner
указывает, что пользователя нельзя добавить в качестве владельца курса, поскольку он не является сопреподавателем.
Возможные действия : Опишите причину неисправности. Если запрашивающий пользователь не является администратором, предложите ему сначала отправить пользователю приглашение стать преподавателем курса, прежде чем обновлять имя владельца. Если запрашивающий пользователь является администратором, предложите сначала добавить этого пользователя в качестве сопреподавателя курса.
Ожидание приглашения существует
PendingInvitationExists
указывает, что кто-то уже был приглашен стать владельцем курса. Эта ошибка возникает во время передачи владения курсом, когда передача уже была начата, но еще не принята новым владельцем.
ПользовательCannotOwnCourse
UserCannotOwnCourse
указывает, что пользователя нельзя добавить в качестве владельца курса.
Возможное действие : Опишите причину сбоя и предложите, чтобы курс не мог быть создан с пользователем в качестве владельца курса. Пользователь, не являющийся администратором, отправляющий запрос, может увидеть эту ошибку, если попытается создать курс с пользователем, отличным от него самого, в качестве владельца. Администратор, запрашивающий пользователя, может увидеть эту ошибку, если учетная запись пользователя, указанная в качестве владельца, не существует или пользователь не находится в его домене.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
указывает, что пользователь уже является членом максимально разрешенного числа групп и не может присоединиться ни к каким курсам. Этот код обычно возвращается методами students.create()
или teachers.create()
. Дополнительную информацию см. в разделе «Ограничения на размер класса» статьи Справочного центра «Пригласить учащихся на занятия в классе ».
Возможное действие : Опишите причину сбоя и предложите пользователю покинуть все курсы, в которых он не участвует. Пользователь может рассмотреть возможность создания дополнительной учетной записи, если ему необходимо участвовать в дополнительных курсах. Если это применимо к вашему приложению, вы можете использовать students.create()
или teachers.delete()
для управления списками от имени пользователя.
HTTP 403: PERMISSION_DENIED
Все методы API Класса могут возвращать ошибку PERMISSION_DENIED
(HTTP 403), если конечный пользователь не соответствует предварительным требованиям для доступа. Сопровождающее ошибку сообщение содержит сообщение об ошибке , которое поможет вам определить причину и предложит пользователям предпринять соответствующие действия.
В следующих разделах описаны распространенные сообщения об ошибках API Класса.
CannotDirectAddUser
CannotDirectAddUser
указывает, что пользователя нельзя напрямую добавить в курс. Этот код возникает, когда администратор домена пытается добавить пользователя в курс, а у этого пользователя либо нет адреса электронной почты, либо он не принадлежит к домену.
Возможное действие : Опишите причину сбоя и предложите администратору домена проверить, что учетная запись пользователя существует и находится в домене администратора курса.
КлассApiОтключено
ClassroomApiDisabled
указывает, что запрашивающий пользователь не имеет доступа к API Класса.
Возможное действие : направьте пользователя к инструкциям по включению доступа к данным Класса . Также см. ClassroomDisabled , поскольку пользователь может использовать неправильную учетную запись.
КлассОтключено
ClassroomDisabled
указывает, что запрашивающий пользователь не имеет доступа к Классу.
Возможное действие : направьте пользователя к инструкциям по включению доступа к Классу . Пользователь также может использовать не ту учетную запись, поэтому вы также можете предоставить ссылку на использование нескольких учетных записей , чтобы пользователь мог выбрать правильную учетную запись.
Срок действия истекAddOnToken
ExpiredAddOnToken
указывает, что срок действия дополнительного токена, используемого для вызовов API, истек.
Возможное действие : предложите пользователю обновить страницу или снова войти в надстройку, чтобы вы могли получить новый параметр запроса addOnToken
из URL-адреса запроса.
Инвалидаддонтокен
InvalidAddOnToken
указывает, что токен дополнения, переданный в запросе, не авторизован для создания вложения дополнения в задании.
Возможное действие : эта ошибка может возникнуть, если пользователь входит в надстройку с учетной записью, отличной от учетной записи в Классе. Попросите пользователя либо выйти из всех других учетных записей в браузере, либо открыть Класс в окне Chrome в режиме инкогнито.
ProjectPermissionDenied
ProjectPermissionDenied
указывает, что запрос попытался изменить ресурс, связанный с другим проектом консоли разработчика.
Возможное действие : Укажите, что ваше приложение не может выполнить запланированный запрос. Это может быть сделано только проектом Developer Console с идентификатором клиента OAuth , создавшим ресурс.
Усеринелигиблетоупдатеградингпериодсеттингс
UserIneligibleToUpdateGradingPeriodSettings
указывает, что запрос попытался изменить настройки оцениваемого периода в курсе, где у запрашивающего пользователя или владельца курса нет соответствующей лицензии Google Workspace for Education.
Возможное действие : укажите, что ваше приложение не может выполнить запланированный запрос на обновление настроек учебного периода из-за статуса лицензии запрашивающего пользователя или владельца курса. Лицензии можно назначать в консоли администратора Google.
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
возвращается, когда запрошенное действие не разрешено из-за исчерпания какого-либо ресурса, например квоты или мощности сервера. Ошибки запроса такого типа обычно возникают из-за чрезмерной нагрузки вашего приложения.
Чтобы избежать срабатывания этих ограничений и повысить надежность вашего приложения, используйте механизмы повтора. К допустимым механизмам повторных попыток относятся:
Используйте усеченную экспоненциальную отсрочку, чтобы повторить запрос и максимизировать пропускную способность запросов в параллельных средах.
Чтобы избежать коллизий, рассмотрите усеченную экспоненциальную задержку с джиттером. Введение джиттера может помочь вашим запросам выполняться быстрее, вводя случайную задержку, которая распределяет всплески запросов.
Если ваше приложение возвращает ошибки RESOURCE_EXHAUSTED
из-за ограничений квоты, отправьте запрос об увеличении квоты. Дополнительную информацию см. в статье Справочного центра по квотам Monitor API .
Усеркурседжоинрателимитреседед
UserCourseJoinRateLimitReached
указывает, что пользователь уже присоединился к максимально допустимому количеству курсов за один день. Дополнительную информацию см. в разделе «Приглашения и размер групп» статьи Справочного центра «Понимание политик и ограничений групп» .
Возможное действие : Опишите причину сбоя и предложите пользователю подождать один день, прежде чем присоединиться к курсу.
HTTP 500: INTERNAL
INTERNAL
указывает на то, что при обработке запроса возникла непредвиденная ошибка. INTERNAL
ошибки запроса также часто можно устранить, используя экспоненциальную отсрочку для повторной попытки запроса. Если INTERNAL
ошибка не устранена, о ней можно сообщить, отправив сообщение об ошибке в систему отслеживания общедоступных проблем API Класса .