Распространенные сообщения об ошибках API Google Classroom

На этой странице описаны некоторые распространенные сообщения об ошибках API Google Classroom, проблемы и возможные действия для следующих типов ошибок:

HTTP 400: FAILED_PRECONDITION

FAILED_PRECONDITION возвращается, когда пользователь пытается выполнить действие, которое не может быть разрешено, либо потому, что пользователь достиг предела, либо из-за состояния приложения, например CourseNotModifiable . Чтобы исправить FAILED_PRECONDITION , попросите пользователя выполнить какое-либо действие, а затем повторить попытку. Или, в некоторых случаях, вы можете использовать альтернативные конечные точки для исправления состояния от имени пользователя.

ВложениеНевидимо

AttachmentNotVisible указывает, что одно или несколько указанных вложений либо не видны пользователю, либо не запрошенного типа, либо не существуют. Например, элементы Диска, которые не были предоставлены пользователю, вернут эту ошибку.

Возможные действия : Опишите причину сбоя и предложите пользователю перепроверить идентификаторы, такие как идентификаторы файлов Drive, которые он включил. Также убедитесь, что у пользователя есть соответствующие разрешения на просмотр вложения.

НевозможноУдалитьВладельцаПапкиКурса

CannotRemoveCourseFolderOwner указывает, что владелец папки курса на Диске не может быть удален.

Возможные действия : опишите причину сбоя и предложите пользователю передать право собственности на папку курса на Диске другому пользователю и повторить попытку.

НевозможноУдалитьВладельцаКурса

CannotRemoveCourseOwner указывает, что владелец курса не может быть удален.

Возможные действия : Опишите причину сбоя и предположите, что владелец курса не может быть удален. В большинстве случаев пользователь пытается удалить себя сам, что не допускается.

НевозможноУдалитьВладельцаКурсаПередачаНезавершена

CannotRemoveCourseOwnerTransferIncomplete указывает, что владелец курса не может быть удален, поскольку передача права собственности на этот класс все еще выполняется.

Возможные действия : опишите причину сбоя и предложите пользователю подождать несколько секунд, пока не завершится асинхронное действие по передаче права собственности на класс, а затем повторите попытку.

Невозможно удалить преподавателя, не владеющего курсом

CannotRemoveTeacherWithNoCourseOwner указывает, что преподаватель не может быть удален из курса, у которого нет владельца.

Возможные действия : Опишите причину сбоя и предположите, что учитель не может быть удален. В большинстве случаев учетная запись владельца курса была удалена, что привело к недопустимому состоянию курса.

CourseMemberLimitReached

CourseMemberLimitReached указывает, что предпринятое действие превысит максимально допустимое количество участников курса. Этот код обычно возвращается students.create() Для получения дополнительной информации см. раздел «Ограничения размера класса» в статье центра справки «Пригласить студентов в класс ».

Возможные действия : опишите причину сбоя и предложите пользователю удалить ненужных участников курса.

КурсНеИзменяемый

CourseNotModifiable указывает, что соответствующий курс находится в состоянии, которое не позволяет изменять его свойства (кроме самого состояния курса).

Возможные действия : Предложить пользователю изменить курс на изменяемое состояние курса . Чтобы изменить состояние, используйте courses.patch() . Состояние курса можно изменить в запросе, который изменяет другие свойства.

КурсПреподавательПределДостигнут

CourseTeacherLimitReached указывает, что запрошенное действие превысит максимально допустимое количество преподавателей курса. Этот код обычно возвращается методом teachers.create() . Для получения дополнительной информации см. раздел «Ограничения размера класса» в статье центра поддержки «Добавление со-преподавателя в класс» .

Возможные действия : Опишите причину сбоя и предложите пользователю удалить ненужных преподавателей курса. Если это применимо к вашему приложению, вы можете использовать метод teachers.delete() для управления списками преподавателей от имени пользователя.

КурсТемаЛимитДостигнут

CourseTopicLimitReached указывает, что запрошенное действие превысит максимально допустимое количество тем в курсе. Этот код обычно возвращается методом courses.topics.create() .

Возможные действия : Опишите причину сбоя и предложите пользователю удалить ненужные темы. Если это применимо к вашему приложению, вы можете использовать метод courses.topics.delete() для управления темами от имени пользователя.

НеактивныйВладелец курса

InactiveCourseOwner указывает, что запрошенное действие не разрешено, поскольку учетная запись владельца курса удалена. Администратор владельца курса должен восстановить учетную запись владельца курса, прежде чем выполнять запрошенное действие.

Возможные действия : Опишите причину сбоя и предложите администратору восстановить учетную запись владельца курса, прежде чем повторять операцию.

НеправомочныйВладелец

IneligibleOwner указывает, что пользователь не может быть добавлен в качестве владельца курса, поскольку он не является со-преподавателем.

Возможные действия : Опишите причину сбоя. Если запрашивающий пользователь не является администратором, предложите сначала отправить пользователю приглашение стать преподавателем курса, прежде чем обновлять владельца. Если запрашивающий пользователь является администратором, предложите сначала добавить пользователя в качестве со-преподавателя курса.

ОжиданиеПриглашенияСуществует

PendingInvitationExists указывает, что кто-то уже был приглашен стать владельцем курса. Эта ошибка возникает во время передачи права собственности на курс, когда передача была начата ранее, но еще не принята новым владельцем.

ПользовательНеМожетВладетьКурсом

UserCannotOwnCourse указывает, что пользователь не может быть добавлен в качестве владельца курса.

Возможные действия : Опишите причину сбоя и предположите, что курс не может быть создан с пользователем в качестве владельца курса. Пользователь, не являющийся администратором, может увидеть эту ошибку, если он попытается создать курс с пользователем, отличным от себя, в качестве владельца. Пользователь, запрашивающий администратор, может увидеть эту ошибку, если учетная запись пользователя, указанная в качестве владельца, не существует или пользователь не находится в его домене.

ГруппыПользователейДостигнут предел членства

UserGroupsMembershipLimitReached указывает, что пользователь уже является участником максимально допустимого числа групп и не может присоединиться ни к одному курсу. Этот код обычно возвращается students.create() или teachers.create() . Для получения дополнительной информации см. раздел «Ограничения размера класса» в статье центра справки Пригласить студентов в класс .

Возможные действия : Опишите причину сбоя и предложите пользователю покинуть любые курсы, в которых он не участвует. Пользователь может рассмотреть возможность создания дополнительной учетной записи, если ему нужно участвовать в большем количестве курсов. Если это применимо к вашему приложению, вы можете использовать students.create() или teachers.delete() для управления списками от имени пользователя.

HTTP 403: PERMISSION_DENIED

Все методы API класса могут возвращать ошибку PERMISSION_DENIED (HTTP 403), если конечный пользователь не соответствует предварительным условиям для доступа. Сообщение, сопровождающее ошибку, содержит сообщение об ошибке , которое поможет вам определить причину и направить пользователей на выполнение соответствующих действий.

В следующих разделах описаны распространенные сообщения об ошибках API Classroom.

НевозможноDirectAddUser

CannotDirectAddUser указывает, что пользователь не может быть напрямую добавлен в курс. Этот код появляется, когда администратор домена пытается добавить пользователя в курс, а у этого пользователя либо нет адреса электронной почты, либо он не принадлежит домену.

Возможные действия : Опишите причину сбоя и предложите администратору домена проверить, существует ли учетная запись пользователя и находится ли она в домене администратора курса.

ClassroomApiОтключено

ClassroomApiDisabled указывает, что запрашивающий пользователь не имеет доступа к API Classroom.

Возможные действия : Направьте пользователя к инструкциям по включению доступа к данным Classroom . Также см. ClassroomDisabled , так как пользователь может использовать неправильную учетную запись.

КлассИнвалиды

ClassroomDisabled указывает, что у запрашивающего пользователя нет доступа к Classroom.

Возможные действия : Направьте пользователя к инструкциям по включению доступа к классу . Пользователь также может использовать неправильную учетную запись, поэтому вы также можете предоставить ссылку на использование нескольких учетных записей , чтобы пользователь мог выбрать правильную учетную запись.

Истек срок действия AddOnToken

ExpiredAddOnToken указывает, что срок действия токена дополнения, используемого для вызовов API, истек.

Возможное действие : Предложите пользователю обновить страницу или снова войти в надстройку, чтобы можно было получить новый параметр запроса addOnToken из URL-адреса запроса.

НеверныйДобавитьТокен

InvalidAddOnToken указывает, что токен дополнения, переданный в запросе, не авторизован для создания вложения дополнения к заданию.

Возможные действия : эта ошибка может возникнуть, если пользователь входит в надстройку с учетной записью, отличной от учетной записи в Classroom. Попросите пользователя либо выйти из всех других учетных записей в браузере, либо открыть Classroom в окне Chrome в режиме инкогнито.

ПроектPermissionDenied

ProjectPermissionDenied указывает, что запрос попытался изменить ресурс, связанный с другим проектом консоли разработчика.

Возможные действия : Укажите, что ваше приложение не может выполнить предполагаемый запрос. Он может быть выполнен только проектом Developer Console идентификатора клиента OAuth , который создал ресурс.

Усеринелигиблетоупдатеградингпериодсеттингс

UserIneligibleToUpdateGradingPeriodSettings указывает, что запрос пытался изменить настройки периода оценки в курсе, где запрашивающий пользователь или владелец курса не имеет соответствующей лицензии Google Workspace for Education или запрашивающий пользователь не является преподавателем курса или администратором домена.

Возможные действия : Укажите, что ваше приложение не может сделать предполагаемый запрос на обновление настроек периода оценки из-за статуса лицензирования или роли курса. Лицензии можно назначать в консоли администратора Google.

HTTP 429: RESOURCE_EXHAUSTED

RESOURCE_EXHAUSTED возвращается, когда запрошенное действие не разрешено, поскольку какой-либо ресурс, например квота или емкость сервера, исчерпан. Эти типы ошибок запроса обычно возникают из-за того, что ваше приложение создает чрезмерную нагрузку.

Чтобы избежать срабатывания этих ограничений и повысить надежность вашего приложения, используйте механизмы повтора. Допустимые механизмы повтора включают:

  • Используйте усеченную экспоненциальную задержку для повторной попытки запроса и максимизации пропускной способности запросов в параллельных средах.

  • Чтобы избежать коллизий, рассмотрите усеченную экспоненциальную задержку с джиттером. Введение джиттера может помочь вашим запросам быстрее выполняться за счет введения рандомизированной задержки, которая распределяет пики в запросах.

Если ваше приложение возвращает ошибки RESOURCE_EXHAUSTED из-за ограничений квоты, отправьте запрос на увеличение квоты. Для получения дополнительной информации см. статью справочного центра Monitor API quotas .

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached указывает, что пользователь уже присоединился к максимально допустимому количеству курсов за один день. Для получения дополнительной информации см. раздел «Приглашения в группы и их размер» в статье справочного центра Understand Groups policies and limits .

Возможные действия : Опишите причину сбоя и предложите пользователю подождать один день, прежде чем присоединиться к курсу.

HTTP 500: INTERNAL

INTERNAL указывает на то, что при обработке запроса возникла непредвиденная ошибка. Ошибки запросов INTERNAL также часто можно устранить, используя экспоненциальную отсрочку для повторной попытки запроса. Если ошибка INTERNAL сохраняется, о ней можно сообщить, отправив сообщение об ошибке в общедоступный трекер проблем Classroom API .