הודעות שגיאה נפוצות ב-Google Classroom API

בדף הזה מתוארות כמה הודעות שגיאה נפוצות של Google Classroom API, בעיות ופעולות אפשריות לגבי סוגי השגיאות הבאים:

HTTP 400: ‏ FAILED_PRECONDITION

הערך FAILED_PRECONDITION מוחזר כשהמשתמש מנסה לבצע פעולה שלא ניתן לאשר, כי המשתמש הגיע למגבלה או למצב של האפליקציה, כמו CourseNotModifiable. כדי לתקן את השגיאה FAILED_PRECONDITION, צריך לבקש מהמשתמש לבצע פעולה כלשהי ולאחר מכן לנסות שוב. לחלופין, במקרים מסוימים תוכלו להשתמש בנקודות קצה חלופיות כדי לתקן את המצב בשם המשתמש.

AttachmentNotVisible

הערך AttachmentNotVisible מציין שקבצים מצורפים מסוימים לא גלויים למשתמש, שהם לא מהסוג המבוקש או שהם לא קיימים. לדוגמה, פריטים ב-Drive שלא שותפו עם המשתמש יגרמו להצגת השגיאה הזו.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש לבדוק שוב את המזהים שכלל, כמו מזהי קבצים ב-Drive. כמו כן, חשוב לוודא שלמשתמש יש את ההרשאות המתאימות כדי להציג את הקובץ המצורף.

CannotRemoveCourseFolderOwner

הסמל CannotRemoveCourseFolderOwner מציין שלא ניתן להסיר את הבעלים של תיקיית הקורס ב-Drive.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להעביר את הבעלות על התיקייה של הקורס ב-Drive למשתמש אחר ולנסות שוב.

CannotRemoveCourseOwner

הסמל CannotRemoveCourseOwner מציין שלא ניתן להסיר את הבעלים של הקורס.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים שלא ניתן להסיר את הבעלים של הקורס. ברוב המקרים, המשתמש מנסה להסיר את עצמו, וזה אסור.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete מציין שאי אפשר להסיר את הבעלים של הקורס כי העברת הבעלות על הכיתה הזו עדיין מתבצעת.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להמתין כמה רגעים עד שהפעולה האסינכרונית של העברת הבעלות על הכיתה תושלם, ואז לנסות שוב.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner מציין שלא ניתן להסיר מורה מקורס ללא בעלים.

פעולה אפשרית: מתארים את הסיבה לכך שהפעולה נכשלה ומציעים שלא להסיר את המורה. ברוב המקרים, חשבון המשתמש של בעלי הקורס נמחק, וכתוצאה מכך המצב של הקורס לא תקין.

CourseMemberLimitReached

CourseMemberLimitReached מציין שהפעולה שבוצעה תחרוג ממספר המשתתפים המקסימלי המותר בקורס. בדרך כלל, הקוד הזה מוחזר על ידי students.create(). למידע נוסף, אפשר לעיין בקטע 'מגבלות על מספר התלמידים בכיתה' במאמר במרכז העזרה בנושא הזמנת תלמידים לכיתה.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להסיר משתתפים לא נחוצים מהקורס.

CourseNotModifiable

הערך CourseNotModifiable מציין שהקורס הרלוונטי נמצא במצב שלא מאפשר לשנות את המאפיינים שלו (מלבד מצב הקורס עצמו).

פעולה אפשרית: לבקש מהמשתמש לשנות את הקורס למצב קורס שניתן לשינוי. כדי לשנות את המצב, משתמשים ב-courses.patch(). אפשר לשנות את מצב הקורס בבקשה שמשנה מאפיינים אחרים.

CourseTeacherLimitReached

הערך CourseTeacherLimitReached מציין שהפעולה המבוקשת תחרוג ממספר המורים המקסימלי המותר בקורס. בדרך כלל הקוד הזה מוחזר על ידי teachers.create(). מידע נוסף זמין בקטע 'מגבלות על מספר התלמידים בכיתה' במאמר הוספת מורה עמית לכיתה במרכז העזרה.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להסיר מורים לא נחוצים לקורס. אם האפשרות הזו רלוונטית לאפליקציה שלכם, תוכלו להשתמש ב-teachers.delete() כדי לנהל את רשימות המורים בשם המשתמש.

InactiveCourseOwner

InactiveCourseOwner מציין שהפעולה המבוקשת לא מותרת כי החשבון של הבעלים של הקורס נמחק. האדמין של הבעלים של הקורס צריך לשחזר את החשבון של הבעלים של הקורס לפני שהוא מבצע את הפעולה המבוקשת.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים לאדמין לשחזר את החשבון של הבעלים של הקורס לפני ניסיון חוזר לביצוע הפעולה.

IneligibleOwner

IneligibleOwner מציין שאי אפשר להוסיף את המשתמש כבעלים של הקורס כי הוא לא מורה עמית.

פעולה אפשרית: מתארים את הסיבה לכישלון. אם המשתמש המבקש לא אדמין, כדאי להציע לו לשלוח למשתמש הזמנה להיות מורה בקורס לפני שהוא מעדכן את הבעלים. אם המשתמש המבקש הוא אדמין, כדאי להציע לו להוסיף את המשתמש כמרצה שותף בקורס.

PendingInvitationExists

PendingInvitationExists מציין שמישהו כבר הוזמן לקבל בעלות על הקורס. השגיאה הזו מתקבלת במהלך העברת הבעלות על קורס, אם ההעברה כבר הותחילה אבל הבעלים החדש עדיין לא אישר אותה.

UserCannotOwnCourse

UserCannotOwnCourse מציין שאי אפשר להוסיף את המשתמש כבעלים של הקורס.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים שלא ניתן ליצור את הקורס עם המשתמש כבעלים שלו. משתמש שאינו אדמין יכול לראות את השגיאה הזו אם הוא מנסה ליצור קורס עם משתמש אחר בתור הבעלים. אדמין שמבקש משתמש עשוי לראות את השגיאה הזו אם חשבון המשתמש שצוין כבעלים לא קיים או שהמשתמש לא נמצא בדומיין שלו.

UserGroupsMembershipLimitReached

הערך UserGroupsMembershipLimitReached מציין שהמשתמש כבר חבר במספר הקבוצות המקסימלי המותר, ולא יכול להצטרף לקורסים. בדרך כלל הקוד הזה מוחזר על ידי students.create() או teachers.create(). מידע נוסף זמין בקטע 'מגבלות על מספר התלמידים בכיתה' במאמר במרכז העזרה בנושא הזמנת תלמידים לכיתה.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש לעזוב קורסים שהוא לא משתתף בהם. אם המשתמש צריך להשתתף בקורסים נוספים, כדאי לו ליצור חשבון נוסף. אם זה רלוונטי לאפליקציה שלכם, תוכלו להשתמש ב-students.create() או ב-teachers.delete() כדי לנהל את המצבות בשם המשתמש.

HTTP 403: ‏ PERMISSION_DENIED

כל השיטות של Classroom API עשויות להחזיר שגיאה מסוג PERMISSION_DENIED (HTTP 403) אם משתמש קצה לא עומד בדרישות המוקדמות לגישה. ההודעה שמופיעה עם השגיאה מכילה הודעת שגיאה שתעזור לכם לזהות את הגורם ולהנחות את המשתמשים לבצע את הפעולה המתאימה.

בקטעים הבאים מתוארות הודעות שגיאה נפוצות ב-Classroom API.

CannotDirectAddUser

CannotDirectAddUser מציין שאי אפשר להוסיף משתמש ישירות לקורס. הקוד הזה מופיע כשאדמין דומיין מנסה להוסיף משתמש לקורס, ואין למשתמש כתובת אימייל או שהוא לא שייך לדומיין.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים לאדמין הדומיין לבדוק שחשבון המשתמש קיים ושנמצא בדומיין של האדמין של הקורס.

ClassroomApiDisabled

הערך ClassroomApiDisabled מציין שלמשתמש המבקש אין גישה ל-Classroom API.

פעולה אפשרית: מפנים את המשתמש להוראות להפעלת הגישה לנתונים ב-Classroom. כדאי לעיין גם בסטטוס ClassroomDisabled, כי יכול להיות שהמשתמש משתמש בחשבון הלא נכון.

ClassroomDisabled

הערך ClassroomDisabled מציין שלמשתמש המבקש אין גישה ל-Classroom.

פעולה אפשרית: מפנים את המשתמש להוראות להפעלת הגישה ל-Classroom. יכול להיות גם שהמשתמש משתמש בחשבון הלא נכון, לכן כדאי לספק גם קישור לשימוש בכמה חשבונות כדי שהמשתמש יוכל לבחור את החשבון הנכון.

ExpiredAddOnToken

ExpiredAddOnToken מציין שהאסימון של התוסף שמשמש לקריאות ל-API פג.

פעולה אפשרית: מבקשים מהמשתמש לרענן את הדף או להיכנס שוב לתוסף כדי לקבל את פרמטר השאילתה החדש addOnToken מכתובת ה-URL של הבקשה.

InvalidAddOnToken

הערך InvalidAddOnToken מציין שאסימון התוסף שהוענק בבקשה לא מורשה ליצור קובץ מצורף של תוסף במטלה.

פעולה אפשרית: השגיאה הזו יכולה להתרחש אם המשתמש נכנס לתוסף באמצעות חשבון שונה מהחשבון ב-Classroom. מבקשים מהמשתמש לצאת מכל החשבונות האחרים בדפדפן או לפתוח את Classroom בחלון פרטי ב-Chrome.

ProjectPermissionDenied

הערך ProjectPermissionDenied מציין שהבקשה ניסתה לשנות משאב שמשויך לפרויקט אחר ב-Developer Console.

פעולה אפשרית: מציינים שהאפליקציה לא יכולה לשלוח את הבקשה המיועדת. אפשר לבצע את הפעולה הזו רק דרך הפרויקט ב-Developer Console של מזהה הלקוח ב-OAuth שיצר את המשאב.

UserIneligibleToUpdateGradingPeriodSettings

הערך UserIneligibleToUpdateGradingPeriodSettings מציין שהבקשה ניסתה לשנות את ההגדרות של תקופת הערכה בקורס שבו למשתמש מבקש או לבעלים של הקורס אין את הרישיון המתאים ל-Google Workspace for Education.

פעולה אפשרית: מציינים שהאפליקציה לא יכולה לשלוח את הבקשה המתוכננת לעדכון ההגדרות של תקופת המטלות בגלל סטטוס הרישוי של המשתמש המבקש או של הבעלים של הקורס. אפשר להקצות רישיונות במסוף Google Admin.

HTTP 429: ‏ RESOURCE_EXHAUSTED

הערך RESOURCE_EXHAUSTED מוחזר כשהפעולה המבוקשת לא מותרת כי משאב כלשהו, כמו מכסה או קיבולת השרת, אזל. בדרך כלל, סוגים כאלה של שגיאות בקשות מתרחשות כי האפליקציה יצרה עומס יתר.

כדי להימנע מהפעלת המגבלות האלה ולהגדיל את האמינות של האפליקציה, כדאי להשתמש במנגנוני ניסיון חוזר. מנגנוני ניסיון חוזר תקפים כוללים:

  • שימוש בהשהיה מעריכית קטועה לפני ניסיון חוזר (truncated exponential backoff) כדי לנסות שוב את הבקשה ולהגדיל את תפוקת הבקשות בסביבות בו-זמניות.

  • כדי למנוע התנגשויות, מומלץ להשתמש בהשהיה מעריכית קטועה לפני ניסיון חוזר (truncated exponential backoff) עם רעידות. הוספת תנודות יכולה לעזור לבקשות להצליח מהר יותר על ידי הוספת עיכוב אקראי שמפיץ את העליות החדות בבקשות.

אם הבקשה מחזירה שגיאות מסוג RESOURCE_EXHAUSTED בגלל מגבלות מכסה, צריך לשלוח בקשה להגדלת המכסה. מידע נוסף זמין במאמר מעקב אחרי מכסות API במרכז העזרה.

UserCourseJoinRateLimitReached

הערך UserCourseJoinRateLimitReached מציין שהמשתמש כבר הצטרף למספר המקסימלי של קורסים ביום אחד. מידע נוסף זמין בקטע 'הזמנות לקבוצות והיקף הקבוצות' במאמר הסבר על כללי המדיניות והמגבלות בקבוצות Google במרכז העזרה.

פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להמתין יום אחד לפני שהוא מצטרף לקורס.

HTTP 500: ‏ INTERNAL

הערך INTERNAL מציין ששגיאה בלתי צפויה התרחשה במהלך עיבוד הבקשה. לעתים קרובות אפשר לפתור שגיאות בבקשות INTERNAL גם באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי לנסות שוב את הבקשה. אם השגיאה INTERNAL נמשכת, תוכלו לדווח עליה על ידי שליחת באג לכלי למעקב אחרי בעיות ציבוריות ב-Classroom API.