בדף הזה מפורטות כמה הודעות שגיאה נפוצות, בעיות ופעולות אפשריות ב-Google Classroom API לסוגי השגיאות הבאים:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
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()
כדי לנהל את רשימות התלמידים בשם המשתמש.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl
מציין שהפעולה המבוקשת לא מותרת כי היא תוסיף כתובת URL לשם הקורס. אין תמיכה בתבניות של כתובות URL בכותרות של קורסים.
פעולה אפשרית:
צריך לתאר את הסיבה לכשל ולהציע למשתמש להסיר את תבנית כתובת ה-URL
מהשדה title
. מותר להשתמש בכתובות ה-URL בשדה description
.
CourseTopicLimitReached
CourseTopicLimitReached
מציין שהפעולה המבוקשת תגרום לחריגה ממספר הנושאים המקסימלי המותר בקורס. הקוד הזה מוחזר בדרך כלל על ידי השיטה courses.topics.create()
.
פעולה אפשרית:
תאר את הסיבה לכישלון והצע למשתמש להסיר נושאים מיותרים. אם זה רלוונטי לאפליקציה שלכם, אתם יכולים להשתמש בשיטה
courses.topics.delete()
כדי לנהל נושאים בשם המשתמש.
EmptyAssignees
EmptyAssignees
מציין שהפעולה המבוקשת תסיר את כל המשתמשים שהוקצו לעבודה מהמטלות התואמות. אין תמיכה במטלות ללא הקצאת נמענים.
פעולה אפשרית: תאר את הסיבה לכישלון והצע שהבעלים של הקורס לא יכול להסיר את כל המשתמשים שהוקצו.
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.