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

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

HTTP 400: FAILED_PRECONDITION

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

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

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

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

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

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

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

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

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

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

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

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

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

Невозможно удалить преподавателя без владельца курса

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

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

CourseMemberLimitReached

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

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

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

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

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

CourseTeacherLimitReached

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

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

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl указывает, что запрошенное действие не разрешено, поскольку оно внедрит URL-адрес в название курса. Шаблоны URL-адресов не поддерживаются в названиях курсов.

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

CourseTopicLimitReached

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

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

EmptyAssignees

EmptyAssignees указывает, что запрошенное действие удалит всех исполнителей из соответствующей курсовой работы. Курсовые работы без исполнителей не поддерживаются.

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

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

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

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

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

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

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

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

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

Пользователь не может владеть курсом

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

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

Достигнут лимит членства в группах пользователей

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

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

HTTP 403: PERMISSION_DENIED

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

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

CannotDirectAddUser

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

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

ClassroomApiDisabled

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

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

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

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

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

ExpiredAddOnToken

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

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

InvalidAddOnToken

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

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

ProjectPermissionDenied

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

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

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

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

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

HTTP 429: RESOURCE_EXHAUSTED

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

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

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

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

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

UserCourseJoinRateLimitReached

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

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

HTTP 500: INTERNAL

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