Na tej stronie znajdziesz opisy niektórych typowych komunikatów o błędach, problemów i możliwych działań w przypadku tych typów błędów:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
Kod FAILED_PRECONDITION
jest zwracany, gdy użytkownik próbuje wykonać działanie, które nie może zostać dozwolone, ponieważ użytkownik osiągnął limit lub aplikacja jest w stanie CourseNotModifiable
. Aby rozwiązać problem FAILED_PRECONDITION
, poproś użytkownika o wykonanie określonej czynności, a potem 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 określonych załączników jest niewidoczny dla użytkownika, nie jest żądanego typu lub nie istnieje. Na przykład elementy na Dysku, które nie zostały udostępnione użytkownikowi, zwrócą ten błąd.
Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi ponowne sprawdzenie identyfikatorów, np. identyfikatorów plików na Dysku, które zostały przez niego uwzględnione. Upewnij się też, że użytkownik ma odpowiednie uprawnienia do wyświetlania załącznika.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
oznacza, że właściciela folderu zajęć na Dysku nie można usunąć.
Możliwe działanie: opisz przyczynę błędu i zaproponuj użytkownikowi przeniesienie własności folderu kursu na Dysku na innego użytkownika i ponowną próbę.
CannotRemoveCourseOwner
CannotRemoveCourseOwner
oznacza, że właściciela kursu nie można usunąć.
Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj, że właściciel kursu może nie zostać usunięty. 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 poczekał kilka minut na zakończenie asynchronicznego działania polegającego na przeniesieniu własności zajęć, a następnie spróbował ponownie.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
oznacza, że nauczyciel nie może zostać usunięty z kursu bez 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 właściciela kursu zostało usunięte, co spowodowało nieprawidłowy stan kursu.
CourseMemberLimitReached
CourseMemberLimitReached
oznacza, że podjęta próba działania spowoduje przekroczenie maksymalnej dozwolonej liczby uczestników kursu. Ten kod jest zwykle zwracany przez students.create()
. Więcej informacji znajdziesz w sekcji „Limity liczby uczniów w klasie” w artykule w Centrum pomocy Zapraszanie uczniów na zajęcia.
Możliwe działanie: opisz przyczynę niepowodzenia i zaproponuj użytkownikowi usunięcie niepotrzebnych członków kursu.
CourseNotModifiable
CourseNotModifiable
oznacza, że odpowiedni kurs jest w stanie, który nie pozwala na modyfikowanie jego właściwości (z wyjątkiem samego stanu kursu).
Możliwe działanie:
poproś użytkownika o zmianę stanu kursu na stan modyfikowalny. 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
– wskazuje, że żądane działanie spowoduje przekroczenie maksymalnej dozwolonej liczby nauczycieli kursu. Ten kod jest zwykle zwracany przez metodę teachers.create()
.
Więcej informacji znajdziesz w sekcji „Ograniczenia dotyczące liczby uczniów w klasie” w artykule w Centrum pomocy Dodawanie do zajęć nauczyciela współprowadzącego.
Możliwe działanie:
opisz przyczynę błędu i zaproponuj użytkownikowi usunięcie niepotrzebnych nauczycieli kursu. Jeśli dotyczy to Twojej aplikacji, możesz użyć metody
teachers.delete()
do zarządzania listami nauczycieli w imieniu użytkownika.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl
oznacza, że żądane działanie jest niedozwolone, ponieważ spowodowałoby wprowadzenie adresu URL do tytułu kursu. W tytułach kursów nie są obsługiwane wzorce adresów URL.
Możliwe działanie:
opisz przyczynę błędu i zaproponuj użytkownikowi usunięcie wzorca adresu URL z pola title
. Adresy URL są dozwolone w polu description
.
CourseTopicLimitReached
CourseTopicLimitReached
oznacza, że żądane działanie spowoduje przekroczenie maksymalnej dozwolonej liczby tematów w kursie. Ten kod jest zwykle zwracany przez metodę courses.topics.create()
.
Możliwe działanie:
opisz przyczynę niepowodzenia i zaproponuj użytkownikowi usunięcie niepotrzebnych tematów. Jeśli dotyczy to Twojej aplikacji, możesz użyć metody
courses.topics.delete()
do zarządzania tematami w imieniu użytkownika.
EmptyAssignees
EmptyAssignees
oznacza, że żądane działanie spowoduje usunięcie wszystkich osób przypisanych do odpowiedniego zadania. Prace domowe bez przypisanych uczniów nie są obsługiwane.
Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj, że właściciel kursu nie może usunąć wszystkich osób przypisanych do kursu.
InactiveCourseOwner
InactiveCourseOwner
oznacza, że żądane działanie jest niedozwolone, ponieważ konto właściciela kursu zostało usunięte. Administrator właściciela kursu musi przywrócić konto właściciela kursu, zanim wykona żądaną czynność.
Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj administratorowi przywrócenie konta właściciela kursu przed ponowieniem operacji.
IneligibleOwner
IneligibleOwner
oznacza, że nie można dodać użytkownika jako właściciela kursu, ponieważ nie jest on współprowadzącym.
Możliwe działanie: Opisz przyczynę niepowodzenia. Jeśli użytkownik wysyłający żądanie nie jest administratorem, zaproponuj mu, aby najpierw wysłał użytkownikowi zaproszenie do zostania nauczycielem w kursie, a następnie zaktualizował właściciela. Jeśli użytkownik wysyłający prośbę jest administratorem, zaproponuj 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 szkolenia. Ten błąd występuje podczas przenoszenia własności kursu, gdy przeniesienie zostało wcześniej 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ć kursu, którego właścicielem będzie użytkownik. Ten błąd może się pojawić, gdy użytkownik bez uprawnień administratora próbuje utworzyć kurs, którego właścicielem jest inny użytkownik. Administrator wysyłający prośbę o dostęp może zobaczyć ten błąd, jeśli konto użytkownika podane jako właściciel nie istnieje lub użytkownik nie należy do jego domeny.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
oznacza, że użytkownik jest już członkiem maksymalnej dozwolonej 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 klasie” w artykule w Centrum pomocy Zapraszanie uczniów na zajęcia.
Możliwe działanie:
opisz przyczynę niepowodzenia i zaproponuj użytkownikowi opuszczenie zajęć, w których nie uczestniczy. Jeśli użytkownik chce uczestniczyć w większej liczbie kursów, może utworzyć dodatkowe konto. Jeśli dotyczy to Twojej aplikacji, możesz użyć students.create()
lub teachers.delete()
, aby zarządzać listami w imieniu użytkownika.
HTTP 403: PERMISSION_DENIED
Wszystkie metody Classroom API mogą zwracać błąd PERMISSION_DENIED
(HTTP 403), jeśli użytkownik nie spełnia wymagań wstępnych dotyczących dostępu. Komunikat towarzyszący błędowi zawiera komunikat o błędzie, który pomaga zidentyfikować przyczynę i skierować użytkowników do podjęcia odpowiednich działań.
W sekcjach poniżej znajdziesz typowe komunikaty o błędach interfejsu Classroom API.
CannotDirectAddUser
CannotDirectAddUser
oznacza, że użytkownika nie można bezpośrednio dodać do kursu. Ten kod pojawia się, gdy administrator domeny próbuje dodać użytkownika do kursu, a ten użytkownik nie ma adresu e-mail lub nie należy do domeny.
Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj administratorowi domeny sprawdzenie, czy konto użytkownika istnieje i czy znajduje się w domenie administratora kursu.
ClassroomApiDisabled
ClassroomApiDisabled
oznacza, że użytkownik wysyłający żądanie nie ma dostępu do interfejsu API Classroom.
Możliwe działanie: skieruj użytkownika do instrukcji włączania dostępu do danych Classroom. Zobacz też ClassroomDisabled, ponieważ użytkownik może używać niewłaściwego konta.
ClassroomDisabled
ClassroomDisabled
oznacza, że użytkownik wysyłający żądanie nie ma dostępu do Classroom.
Możliwe działanie: skieruj użytkownika do instrukcji włączania dostępu do Classroom. Użytkownik może też używać niewłaściwego konta, więc możesz podać link do informacji o korzystaniu z kilku kont, aby mógł wybrać właściwe konto.
ExpiredAddOnToken
ExpiredAddOnToken
oznacza, że token dodatku używany do wywoływania interfejsu API wygasł.
Możliwe działanie: poproś użytkownika o odświeżenie strony lub ponowne zalogowanie się w dodatku, aby uzyskać nowy addOnToken
parametr zapytania z adresu URL żądania.
InvalidAddOnToken
InvalidAddOnToken
oznacza, że token dodatku przekazany w żądaniu nie jest uprawniony 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 na inne konto niż konto w Classroom. Poproś użytkownika o wylogowanie się ze wszystkich innych kont w przeglądarce lub otwarcie 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: zasygnalizuj, że aplikacja nie może wysłać zamierzonego żądania. Może to zrobić tylko projekt w Konsoli dewelopera, który jest właścicielem identyfikatora klienta OAuth, który utworzył zasób.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
oznacza, że żądanie próbowało zmodyfikować ustawienia okresu oceniania na zajęciach, na których użytkownik wysyłający żądanie lub właściciel zajęć nie ma odpowiedniej licencji Google Workspace for Education albo użytkownik wysyłający żądanie nie jest nauczycielem prowadzącym zajęcia ani administratorem domeny.
Możliwe działanie: wskaż, że Twoja aplikacja nie może wysłać zamierzonego żądania aktualizacji ustawień okresu oceniania ze względu na stan licencji lub rolę w kursie. Licencje można przypisywać w konsoli administracyjnej Google.
HTTP 429: RESOURCE_EXHAUSTED
Kod RESOURCE_EXHAUSTED
jest zwracany, gdy żądane działanie jest niedozwolone, ponieważ wyczerpał się jakiś zasób, np. limit lub pojemność serwera. Te typy błędów żądań występują zwykle dlatego, że aplikacja wygenerowała nadmierne obciążenie.
Aby uniknąć przekroczenia tych limitów i zwiększyć niezawodność aplikacji, używaj mechanizmów ponawiania. Prawidłowe mechanizmy ponawiania obejmują:
Użyj skróconego wzrastającego czasu do ponowienia, aby ponowić żądanie i zmaksymalizować przepustowość żądań w środowiskach współbieżnych.
Aby uniknąć kolizji, rozważ użycie skróconego wzrastającego czasu do ponowienia z losowym opóźnieniem. Wprowadzenie losowego opóźnienia może pomóc w szybszym przetwarzaniu żądań, ponieważ rozkłada skoki liczby żądań.
Jeśli Twoja aplikacja zwraca błędy RESOURCE_EXHAUSTED
z powodu ograniczeń limitu, prześlij prośbę o zwiększenie limitu. Więcej informacji znajdziesz w artykule w Centrum pomocy na temat monitorowania limitów interfejsu API.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
oznacza, że użytkownik dołączył już do maksymalnej dozwolonej liczby zajęć w ciągu jednego dnia. Więcej informacji znajdziesz w sekcji „Zaproszenia do grupy i jej rozmiar” w artykule Omówienie zasad i ograniczeń obowiązujących w Grupach dyskusyjnych w Centrum pomocy.
Możliwe działanie: opisz przyczynę niepowodzenia i zaproponuj użytkownikowi, aby poczekał jeden dzień przed dołączeniem do kursu.
HTTP 500: INTERNAL
INTERNAL
oznacza, że podczas przetwarzania żądania wystąpił nieoczekiwany błąd. Błędy żądań INTERNAL
można często rozwiązać, używając algorytmu Exponential backoff do ponawiania żądań. Jeśli błąd INTERNAL
będzie się powtarzał, możesz go zgłosić, rejestrując błąd w publicznym narzędziu do rejestrowania błędów interfejsu Classroom API.