Typowe komunikaty o błędach interfejsu Google Classroom API

Na tej stronie opisujemy niektóre typowe komunikaty o błędach interfejsu Google Classroom API, problemy i możliwe działania w przypadku tych typów błędów:

HTTP 400: FAILED_PRECONDITION

Wartość FAILED_PRECONDITION jest zwracana, gdy użytkownik próbuje wykonać działanie, które nie może zostać dozwolone, ponieważ osiągnął limit lub stan aplikacji, np. CourseNotModifiable. Aby naprawić błąd FAILED_PRECONDITION, poproś użytkownika o wykonanie pewnych czynności, a następnie spróbuj ponownie. W niektórych przypadkach możesz użyć alternatywnych punktów końcowych, aby naprawić stan w imieniu użytkownika.

AttachmentNotVisible

AttachmentNotVisible oznacza, że co najmniej 1 z wybranych załączników jest albo niewidoczny dla użytkownika, albo nie jest żądanego typu albo nie istnieje. Na przykład ten błąd może wystąpić w przypadku elementów na Dysku, które nie zostały udostępnione użytkownikowi.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby ponownie sprawdził podane przez niego identyfikatory, np. identyfikatory plików na Dysku. Upewnij się też, że użytkownik ma odpowiednie uprawnienia do wyświetlania załącznika.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner oznacza, że właściciel folderu na Dysku nie może go usunąć.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby przeniósł własność folderu na Dysku kursu na innego użytkownika i spróbował ponownie.

CannotRemoveCourseOwner

CannotRemoveCourseOwner oznacza, że właściciela kursu nie można usunąć.

Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj, że właściciela kursu nie można usunąć. W większości przypadków użytkownik próbuje usunąć siebie, co jest niedozwolone.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete oznacza, że właściciela zajęć nie można usunąć, ponieważ przeniesienie własności tych zajęć jest w toku.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby zaczekał chwilę na zakończenie asynchronicznego działania przeniesienia własności zajęć, a następnie spróbuj ponownie.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner oznacza, że nauczyciel nie może zostać usunięty z zajęć, które nie mają właściciela.

Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj, że nauczyciel może nie zostać usunięty. W większości przypadków konto użytkownika, który jest właścicielem kursu, zostało usunięte, co spowodowało nieprawidłowy stan kursu.

CourseMemberLimitReached

CourseMemberLimitReached oznacza, że podjęte działanie spowoduje przekroczenie maksymalnej liczby uczestników kursu. Ten kod jest zwykle zwracany przez students.create(). Więcej informacji znajdziesz w sekcji „Ograniczenia liczby uczniów na zajęciach” w artykule Zapraszanie uczniów na zajęcia w Centrum pomocy.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi usunięcie zbędnych uczestników kursu.

CourseNotModifiable

CourseNotModifiable wskazuje, że dany kurs jest w stanie, który uniemożliwia modyfikowanie jego właściwości (z wyjątkiem stanu samego kursu).

Możliwa akcja: poproś użytkownika o zmianę zajęć na stan zajęć, który można zmienić. Aby zmienić stan, użyj polecenia courses.patch(). Stan kursu można zmienić w żądaniu, które zmienia inne właściwości.

CourseTeacherLimitReached

CourseTeacherLimitReached oznacza, że wykonanie żądanej czynności spowoduje przekroczenie maksymalnej dozwolonej liczby nauczycieli zajęć. Ten kod jest zwykle zwracany przez teachers.create(). Więcej informacji znajdziesz w sekcji „Ograniczenia dotyczące liczby uczniów” artykułu Dodawanie nauczyciela współprowadzącego do zajęć w Centrum pomocy.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi usunięcie zbędących nauczycieli. Jeśli to możliwe w przypadku Twojej aplikacji, możesz użyć funkcji teachers.delete() do zarządzania listami nauczycieli w imieniu użytkownika.

InactiveCourseOwner

InactiveCourseOwner oznacza, że żądane działanie jest niedozwolone, ponieważ konto właściciela zajęć zostało usunięte. Administrator konta właściciela kursu musi przywrócić konto właściciela kursu, zanim wykonasz żądane działanie.

Możliwe działanie: przed ponownym wykonaniem operacji opisz przyczynę błędu i zasugeruj administratorowi przywrócenie konta właściciela kursu.

IneligibleOwner

IneligibleOwner oznacza, że użytkownika nie można dodać jako właściciela kursu, ponieważ nie jest on współwykładowcą.

Możliwe działanie: opisz przyczynę niepowodzenia. Jeśli użytkownik przesyłający prośbę nie jest administratorem, przed zmianą właściciela zachęć go do wysłania zaproszenia do zostania nauczycielem w kursie. Jeśli użytkownik, który wysłał prośbę, jest administratorem, zasugeruj mu, aby najpierw dodał użytkownika jako nauczyciela dodatkowego na zajęciach.

PendingInvitationExists

PendingInvitationExists oznacza, że ktoś został już zaproszony do przejęcia własności kursu. Ten błąd występuje podczas przenoszenia własności zajęć, gdy przeniesienie zostało rozpoczęte, ale nie zostało jeszcze zaakceptowane przez nowego właściciela.

UserCannotOwnCourse

UserCannotOwnCourse oznacza, że użytkownika nie można dodać jako właściciela kursu.

Możliwe działanie: opisz przyczynę błędu i zasugeruj, że nie można utworzyć zajęć z użytkownikiem jako właścicielem zajęć. Użytkownik, który nie jest administratorem, może zobaczyć ten błąd, jeśli spróbuje utworzyć kurs z użytkownikiem, który nie jest właścicielem. Administrator, który wysyła prośbę, może zobaczyć ten błąd, jeśli konto użytkownika wskazane jako właściciel nie istnieje lub nie znajduje się w jego domenie.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached oznacza, że użytkownik należy już do maksymalnej liczby grup i nie może dołączyć do żadnych zajęć. Ten kod jest zwykle zwracany przez students.create() lub teachers.create(). Więcej informacji znajdziesz w sekcji „Ograniczenia dotyczące liczby uczniów” w artykule Zapraszanie uczniów na zajęcia w Centrum pomocy.

Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby opuścił zajęcia, w których nie bierze udziału. Jeśli użytkownik chce wziąć udział w większej liczbie kursów, może utworzyć dodatkowe konto. Jeśli dotyczy Twojej aplikacji, możesz użyć students.create() lub teachers.delete(), aby zarządzać listami w imieniu użytkownika.

HTTP 403: PERMISSION_DENIED

Jeśli użytkownik końcowy nie spełnia wymagań wstępnych, wszystkie metody interfejsu Classroom API mogą zwracać błąd PERMISSION_DENIED (HTTP 403). Komunikat towarzyszący błędowi zawiera komunikat o błędzie, który pomoże Ci zidentyfikować przyczynę i poinformować użytkowników o odpowiednim działaniu.

W kolejnych sekcjach znajdziesz opisy typowych komunikatów o błędach interfejsu Classroom API.

CannotDirectAddUser

CannotDirectAddUser oznacza, że użytkownika nie można dodać bezpośrednio do kursu. Ten kod pojawia się, gdy administrator domeny próbuje dodać użytkownika do kursu, a użytkownik nie ma adresu e-mail lub nie należy do domeny.

Możliwe działanie: opisz przyczynę błędu i zasugeruj administratorowi domeny, aby sprawdził, czy konto użytkownika istnieje i czy znajduje się w domenie administratora kursu.

ClassroomApiDisabled

ClassroomApiDisabled wskazuje, że użytkownik wysyłający żądanie nie ma dostępu do interfejsu Classroom API.

Możliwe działanie: przekieruj użytkownika do instrukcji dotyczących zezwalania na dostęp do danych Classroom. Zobacz też ClassroomDisabled, ponieważ użytkownik może używać niewłaściwego konta.

ClassroomDisabled

ClassroomDisabled Wskazuje, że użytkownik nie ma dostępu do Classroom.

Możliwe działanie: przekieruj użytkownika do instrukcji dotyczących włączania dostępu do Classroom. Użytkownik może też korzystać z niewłaściwego konta, dlatego możesz mu podać link do użytkowania wielu kont, aby mógł wybrać właściwe konto.

ExpiredAddOnToken

ExpiredAddOnToken oznacza, że token dodatku używany do wywoływania interfejsu API wygasł.

Możliwa czynność: poproś użytkownika o odświeżenie strony lub ponowne zalogowanie się w dodatku, aby uzyskać nowy parametr zapytania addOnToken z adresu URL żądania.

InvalidAddOnToken

InvalidAddOnToken oznacza, że token dodatku przekazany w żądaniu nie jest upoważniony do utworzenia załącznika dodatku w projekcie.

Możliwe działanie: ten błąd może wystąpić, jeśli użytkownik zaloguje się w dodatku za pomocą innego konta niż konto w Classroom. Poproś użytkownika, aby wylogował się ze wszystkich innych kont w przeglądarce lub otworzył Classroom w oknie incognito w Chrome.

ProjectPermissionDenied

ProjectPermissionDenied oznacza, że żądanie próbowało zmodyfikować zasób powiązany z innym projektem w Konsoli programisty.

Możliwe działanie: wskazać, że aplikacja nie może przesłać żądania. Może to zrobić tylko projekt w Konsoli dewelopera, który ma identyfikator klienta OAuth tego zasobu.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings oznacza, że próba zmiany ustawień okresu oceniania w kursie została podjęta przez użytkownika lub właściciela kursu, który nie ma odpowiedniej licencji Google Workspace for Education.

Możliwa czynność: wskazać, że aplikacja nie może przesłać żądania aktualizacji ustawień okresu oceniania z powodu stanu licencji użytkownika lub właściciela kursu. Licencje można przypisać w konsoli administracyjnej Google.

HTTP 429: RESOURCE_EXHAUSTED

Wartość RESOURCE_EXHAUSTED jest zwracana, gdy żądane działanie nie jest dozwolone, ponieważ wyczerpany jest jakiś zasób, np. limit lub pojemność serwera. Tego typu błędy żądania występują zwykle, gdy aplikacja wygeneruje nadmierny obciążenie.

Aby uniknąć przekroczenia tych limitów i zwiększyć niezawodność aplikacji, użyj mechanizmów ponownych prób. Prawidłowe mechanizmy ponownego próby:

  • Użyj ucinanego algorytmu Exponential Backoff, aby ponownie przesłać żądanie i maksymalizować przepustowość żądań w środowiskach równoczesnych.

  • Aby uniknąć kolizji, rozważ użycie skróconego wygaszania wykładniczego z szumem. Wprowadzenie jittera może pomóc w szybszym przesyłaniu żądań dzięki losowemu opóźnieniu, które rozkłada żądania na krótsze odstępy.

Jeśli aplikacja zwraca błędy RESOURCE_EXHAUSTED z powodu ograniczeń dotyczących limitu, prześlij prośbę o zwiększenie limitu. Więcej informacji znajdziesz w artykule Limity interfejsu Monitor API w Centrum pomocy.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached oznacza, że użytkownik dołączył już do maksymalnej liczby zajęć w ciągu jednego dnia. Więcej informacji znajdziesz w sekcji „Zaproszenia do grup i ich rozmiar” w artykule Omówienie zasad i ograniczeń obowiązujących w Grupach dyskusyjnych w Centrum pomocy.

Możliwe działanie: opisz przyczynę błędu i zasugeruj, aby użytkownik zaczekał jeden dzień, zanim rozpocznie kurs.

HTTP 500: INTERNAL

INTERNAL oznacza, że podczas przetwarzania żądania wystąpił nieoczekiwany błąd. Błędy żądań INTERNAL można też często rozwiązać, używając ujemnego wykładniczego wygładzania, aby ponownie przesłać żądanie. Jeśli błąd INTERNAL będzie się powtarzał, możesz zgłosić go w publicznym narzędziu do zgłaszania błędów API Classroom.