این صفحه برخی از پیامهای خطای رایج 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
نشان میدهد که یک یا چند پیوست مشخص شده یا برای کاربر قابل مشاهده نیستند، از نوع درخواستی نیستند، یا وجود ندارند. برای مثال، مواردی از Drive که با کاربر به اشتراک گذاشته نشدهاند، این خطا را برمیگردانند.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید شناسههایی مانند شناسههای فایل Drive را که اضافه کردهاند، دوباره بررسی کند. همچنین، مطمئن شوید که کاربر مجوزهای لازم برای مشاهده پیوست را دارد.
نمیتوان مالک پوشه دوره را حذف کرد
CannotRemoveCourseFolderOwner
نشان میدهد که مالک پوشهی درایو دوره قابل حذف نیست.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که مالکیت پوشه Drive دوره را به کاربر دیگری منتقل کند و دوباره امتحان کند.
نمیتوانم مالک دوره را حذف کنم
CannotRemoveCourseOwner
نشان میدهد که مالک دوره قابل حذف نیست.
اقدام احتمالی : علت خرابی را شرح دهید و پیشنهاد دهید که مالک دوره حذف نشود. در بیشتر موارد، کاربر سعی میکند خود را حذف کند که مجاز نیست.
CannotRemoveCourseOwnTransferناقص
CannotRemoveCourseOwnerTransferIncomplete
نشان میدهد که مالک دوره نمیتواند حذف شود زیرا انتقال مالکیت این کلاس هنوز در حال انجام است.
اقدام احتمالی : علت خطا را شرح دهید و به کاربر پیشنهاد دهید که چند لحظه صبر کند تا عمل انتقال مالکیت کلاس به صورت غیرهمزمان انجام شود، سپس دوباره امتحان کند.
نمیتوانم معلم را بدون صاحب دوره حذف کنم
CannotRemoveTeacherWithNoCourseOwner
نشان میدهد که نمیتوان یک معلم را از دورهای که مالک ندارد، حذف کرد.
اقدام احتمالی : علت خرابی را شرح دهید و پیشنهاد دهید که معلم حذف نشود. در بیشتر موارد، حساب کاربری صاحب دوره حذف شده و باعث ایجاد وضعیت نامعتبر در دوره شده است.
محدودیت اعضای دوره
CourseMemberLimitReached
نشان میدهد که اقدام انجام شده از حداکثر تعداد مجاز اعضای دوره تجاوز میکند. این کد معمولاً توسط students.create()
برگردانده میشود. برای اطلاعات بیشتر، به بخش "محدودیتهای اندازه کلاس" در مقاله دعوت از دانشجویان به کلاس در مرکز راهنمای کلاس مراجعه کنید.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که اعضای غیرضروری دوره را حذف کند.
دورهغیرقابل اصلاح
CourseNotModifiable
نشان میدهد که دوره مربوطه در وضعیتی است که اجازه تغییر ویژگیهای آن (به غیر از وضعیت خود دوره) را نمیدهد.
اقدام احتمالی : از کاربر بخواهید که وضعیت دوره را به یک وضعیت قابل تغییر تغییر دهد. برای تغییر وضعیت، از courses.patch()
استفاده کنید. وضعیت دوره را میتوان در درخواستی که سایر ویژگیها را تغییر میدهد، تغییر داد.
محدودیت مدرس دورهرسیده است
CourseTeacherLimitReached
نشان میدهد که اقدام درخواستی از حداکثر تعداد مجاز معلمان دوره تجاوز میکند. این کد معمولاً توسط متد teachers.create()
برگردانده میشود. برای اطلاعات بیشتر، به بخش "محدودیتهای اندازه کلاس" در مقاله " افزودن یک معلم کمکی به کلاس" در مرکز کمک آموزشی مراجعه کنید.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که معلمان دورههای غیرضروری را حذف کند. در صورت امکان، میتوانید از متد teachers.delete()
برای مدیریت فهرست معلمان از طرف کاربر استفاده کنید.
عنوان دورهCannotContainUrl
CourseTitleCannotContainUrl
نشان میدهد که اقدام درخواستی مجاز نیست زیرا باعث ایجاد یک URL در عنوان دوره میشود. الگوهای URL در عناوین دورهها پشتیبانی نمیشوند.
اقدام احتمالی : علت خطا را شرح دهید و به کاربر پیشنهاد دهید الگوی URL را از فیلد title
حذف کند. URL ها در فیلد description
مجاز هستند .
محدودیت موضوع دوره
CourseTopicLimitReached
نشان میدهد که اقدام درخواستی از حداکثر تعداد مجاز موضوعات در یک دوره تجاوز میکند. این کد معمولاً توسط متد courses.topics.create()
برگردانده میشود.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که موضوعات غیرضروری را حذف کند. در صورت لزوم، میتوانید از متد courses.topics.delete()
برای مدیریت موضوعات از طرف کاربر استفاده کنید.
واگذارکنندگان خالی
EmptyAssignees
نشان میدهد که اقدام درخواستی، تمام افراد دارای تکلیف را از دوره مربوطه حذف میکند. دورههایی که هیچ فرد دارای تکلیفی ندارند، پشتیبانی نمیشوند.
اقدام احتمالی : علت خرابی را شرح دهید و پیشنهاد دهید که صاحب دوره نمیتواند همه افراد واگذار شده را حذف کند.
مالک غیرفعال دوره
InactiveCourseOwner
نشان میدهد که اقدام درخواستی مجاز نیست زیرا حساب مالک دوره حذف شده است. مدیر مالک دوره قبل از انجام اقدام درخواستی، باید حساب مالک دوره را بازیابی کند.
اقدام احتمالی : علت خرابی را شرح دهید و پیشنهاد دهید که مدیر قبل از تلاش مجدد برای انجام عملیات ، حساب کاربری صاحب دوره را بازیابی کند .
مالک فاقد شرایط لازم
IneligibleOwner
نشان میدهد که کاربر نمیتواند به عنوان مالک دوره اضافه شود زیرا کاربر، معلم همکار نیست.
اقدام احتمالی : علت شکست را شرح دهید. اگر کاربر درخواستکننده مدیر نیست، پیشنهاد دهید که قبل از بهروزرسانی مالک، ابتدا برای کاربر دعوتنامهای برای تدریس در دوره ارسال کنند. اگر کاربر درخواستکننده مدیر است، پیشنهاد دهید که ابتدا کاربر را به عنوان همکار تدریس دوره اضافه کنند.
در انتظاردعوتنامه موجود است
PendingInvitationExists
نشان میدهد که از شخصی قبلاً برای مالکیت دوره دعوت شده است. این خطا هنگام انتقال مالکیت دوره رخ میدهد، زمانی که انتقال قبلاً آغاز شده اما هنوز توسط مالک جدید پذیرفته نشده است.
کاربر نمیتواند مالک دوره باشد
UserCannotOwnCourse
نشان میدهد که کاربر نمیتواند به عنوان مالک دوره اضافه شود.
اقدام احتمالی : علت خطا را شرح دهید و پیشنهاد دهید که نمیتوان دوره را با کاربری که مالک دوره است ایجاد کرد. کاربری که درخواست ایجاد دوره را میدهد و مدیر نیست، ممکن است در صورت تلاش برای ایجاد دوره با کاربری غیر از خود به عنوان مالک، این خطا را ببیند. کاربری که درخواست ایجاد دوره را به مدیر میدهد، در صورت عدم وجود حساب کاربری مشخص شده به عنوان مالک یا عدم وجود کاربر در دامنه خود، ممکن است این خطا را ببیند.
محدودیت عضویت گروههای کاربری
UserGroupsMembershipLimitReached
نشان میدهد که کاربر در حال حاضر عضو حداکثر تعداد مجاز گروهها است و نمیتواند به هیچ دورهای بپیوندد. این کد معمولاً توسط students.create()
یا teachers.create()
برگردانده میشود. برای اطلاعات بیشتر، به بخش "محدودیتهای اندازه کلاس" در مقاله دعوت از دانشجویان به کلاس در مرکز راهنمایی مراجعه کنید.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که هر دورهای را که در آن شرکت نمیکند، ترک کند. در صورت نیاز به شرکت در دورههای بیشتر، کاربر میتواند ایجاد یک حساب کاربری اضافی را در نظر بگیرد. در صورت لزوم، میتوانید از students.create()
یا teachers.delete()
برای مدیریت فهرستها از طرف کاربر استفاده کنید.
HTTP 403: PERMISSION_DENIED
اگر کاربر نهایی پیشنیازهای دسترسی را نداشته باشد، ممکن است تمام متدهای Classroom API خطای PERMISSION_DENIED
(HTTP 403) را برگردانند. پیام همراه با خطا حاوی یک پیام خطا است که به شما در شناسایی علت و هدایت کاربران برای انجام اقدام مناسب کمک میکند.
بخشهای زیر پیامهای خطای رایج Classroom API را شرح میدهند.
نمیتوان کاربر را مستقیماً اضافه کرد
CannotDirectAddUser
نشان میدهد که نمیتوان کاربر را مستقیماً به دوره اضافه کرد. این کد زمانی اتفاق میافتد که مدیر دامنه سعی میکند کاربری را به دوره اضافه کند و آن کاربر یا آدرس ایمیل ندارد یا به دامنه تعلق ندارد.
اقدام احتمالی : علت خرابی را شرح دهید و پیشنهاد دهید که مدیر دامنه بررسی کند که حساب کاربری وجود دارد و در دامنه مدیر دوره است.
نمیتوان کاربر را در دامنهی غیرقابل اعتماد دعوت کرد
CannotInviteUserInUntrustedDomain
نشان میدهد که کاربر دعوتشده یا اضافهشده در Google Workspace for Education نیست. برای تماسگیرندگانی که دارای مجوز Google Workspace for Education Fundamentals هستند، حسابهای خارج از Google Workspace for Education را نمیتوان مستقیماً به یک دوره اضافه یا دعوت کرد.
اقدام احتمالی : علت خرابی را شرح دهید و به تماسگیرنده پیشنهاد دهید یکی از گزینههای زیر را در نظر بگیرد:
- پیشنهاد میشود که تماسگیرنده به صورت دستی یک لینک دعوت به دوره یا یک کد کلاس را به اشتراک بگذارد. توجه داشته باشید که این کار نیاز به یک مدیر برای پیکربندی دعوتهای خارج از دامنه دارد. برای کسب اطلاعات بیشتر به بخش «دانشجویان را به کلاس خود دعوت کنید» مراجعه کنید.
- به تماسگیرنده پیشنهاد دهید که مجوز خود را به مجوز پولی Google Workspace for Education ارتقا دهد، زیرا این محدودیت فقط در مورد مجوز Fundamentals اعمال میشود.
ClassroomApi غیرفعال شد
ClassroomApiDisabled
نشان میدهد که کاربر درخواستکننده به Classroom API دسترسی ندارد.
اقدام احتمالی : کاربر را به دستورالعملهای فعالسازی دسترسی به دادههای Classroom هدایت کنید. همچنین به ClassroomDisabled مراجعه کنید، زیرا ممکن است کاربر از حساب کاربری اشتباهی استفاده کند.
کلاس درس غیرفعال
ClassroomDisabled
نشان میدهد که کاربر درخواستکننده به Classroom دسترسی ندارد.
اقدام احتمالی : کاربر را به دستورالعملهای فعالسازی دسترسی به کلاس درس هدایت کنید. همچنین ممکن است کاربر از حساب کاربری اشتباهی استفاده کند، بنابراین میتوانید لینکی برای استفاده از چندین حساب کاربری ارائه دهید تا کاربر بتواند حساب کاربری صحیح را انتخاب کند.
توکنهای منقضیشده
ExpiredAddOnToken
نشان میدهد که توکن افزونهای که برای برقراری تماس با API استفاده میشود، منقضی شده است.
اقدام احتمالی : از کاربر بخواهید صفحه را رفرش کند یا دوباره وارد افزونه شود تا بتوانید پارامتر کوئری addOnToken
جدید را از آدرس اینترنتی درخواست دریافت کنید.
توکن اضافه شده نامعتبر
InvalidAddOnToken
نشان میدهد که توکن افزونه ارسال شده در یک درخواست، مجاز به ایجاد پیوست افزونه در تکلیف نیست.
اقدام احتمالی : این خطا ممکن است در صورتی رخ دهد که کاربر با حسابی غیر از حساب کاربری موجود در Classroom وارد افزونه شود. به کاربر دستور دهید که یا از تمام حسابهای کاربری دیگر در مرورگر خارج شود یا Classroom را در یک پنجره ناشناس کروم باز کند.
مجوز پروژه رد شد
ProjectPermissionDenied
نشان میدهد که درخواست سعی در تغییر منبعی مرتبط با یک پروژه کنسول توسعهدهنده متفاوت داشته است.
اقدام احتمالی : مشخص کنید که برنامه شما نمیتواند درخواست مورد نظر را انجام دهد. این درخواست فقط میتواند توسط پروژه کنسول توسعهدهنده با شناسه کلاینت OAuth که منبع را ایجاد کرده است، انجام شود.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
نشان میدهد که درخواست سعی در تغییر تنظیمات دوره نمرهدهی در دورهای داشته است که کاربر درخواستکننده یا مالک دوره مجوز مناسب Google Workspace for Education را ندارد، یا کاربر درخواستکننده معلم دوره یا مدیر دامنه نیست.
اقدام احتمالی : مشخص کنید که برنامه شما به دلیل وضعیت مجوز یا نقش دوره، نمیتواند درخواست مورد نظر برای بهروزرسانی تنظیمات دوره نمرهدهی را انجام دهد. مجوزها را میتوان در کنسول مدیریت گوگل اختصاص داد.
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
زمانی برگردانده میشود که اقدام درخواستی به دلیل اتمام برخی منابع، مانند سهمیه یا ظرفیت سرور، مجاز نباشد. این نوع خطاهای درخواست معمولاً به این دلیل رخ میدهند که برنامه شما بار بیش از حدی تولید کرده است.
برای جلوگیری از فعال شدن این محدودیتها و افزایش قابلیت اطمینان برنامه خود، از مکانیسمهای تلاش مجدد استفاده کنید. مکانیسمهای تلاش مجدد معتبر عبارتند از:
از روش بازگشت نمایی کوتاهشده برای تلاش مجدد درخواست و به حداکثر رساندن توان عملیاتی درخواستها در محیطهای همزمان استفاده کنید.
برای جلوگیری از تصادم، از روش truncated exponential backoff به همراه jitter استفاده کنید. معرفی jitter میتواند با معرفی یک تأخیر تصادفی که تعداد درخواستهای ناگهانی را پخش میکند، به موفقیت سریعتر درخواستهای شما کمک کند.
اگر برنامه شما به دلیل محدودیتهای سهمیه، خطای RESOURCE_EXHAUSTED
برمیگرداند، افزایش سهمیه را ارسال کنید. برای اطلاعات بیشتر، به مقاله مرکز راهنمای سهمیههای Monitor API مراجعه کنید.
کاربرCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
نشان میدهد که کاربر قبلاً به حداکثر تعداد مجاز دورهها در یک روز پیوسته است. برای اطلاعات بیشتر، به بخش «دعوتنامهها و اندازه گروه» در مقاله مرکز راهنمای «سیاستها و محدودیتهای گروهها را درک کنید » مراجعه کنید.
اقدام احتمالی : علت خرابی را شرح دهید و به کاربر پیشنهاد دهید که قبل از پیوستن به دوره، یک روز صبر کند.
HTTP 500: INTERNAL
INTERNAL
نشان میدهد که هنگام پردازش درخواست، خطای غیرمنتظرهای رخ داده است. خطاهای درخواست INTERNAL
را میتوان اغلب با استفاده از backoff نمایی برای امتحان مجدد درخواست نیز حل کرد. اگر خطای INTERNAL
همچنان ادامه داشت، میتوان با ثبت یک اشکال در ردیاب عمومی مشکلات Classroom API آن را گزارش کرد.