توضّح هذه الصفحة بعض رسائل الخطأ والمشاكل والإجراءات المحتملة الشائعة في 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
إلى أنّه لا يمكن إزالة مالك ملف Gmail
الخاص بالدورة التعليمية.
الإجراء المحتمَل: يمكن وصف سبب الخطأ واقتراح نقل ملكية ملف الدورة التدريبية على 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
إلى أنّ صلاحية الرمز المميّز للإضافة المستخدَم لإجراء طلبات بيانات من
واجهة برمجة التطبيقات قد انتهت.
الإجراء المحتمَل: اطلب من المستخدِم إعادة تحميل الصفحة أو تسجيل الدخول إلى الإضافة مجددًا
كي تتمكّن من الحصول على مَعلمة طلب البحث الجديدة addOnToken
من عنوان URL الخاص بالطلب.
InvalidAddOnToken
يشير الرمز InvalidAddOnToken
إلى أنّ رمز الإضافة الذي تم تمريره في الطلب ليس لديه إذن
بإنشاء مرفق إضافة في المهمة الدراسية.
الإجراء المحتمَل: يمكن أن يظهر هذا الخطأ إذا سجّل المستخدم الدخول إلى الإضافة باستخدام حساب مختلف عن الحساب في Classroom. اطلب من العميل تسجيل الخروج من جميع الحسابات الأخرى في المتصفّح أو فتح Classroom في نافذة تصفّح متخفّي في Chrome.
ProjectPermissionDenied
يشير الرمز ProjectPermissionDenied
إلى أنّ الطلب حاول تعديل
مورد مرتبط بمشروع مختلف على Developer Console.
الإجراء المحتمل: يُرجى الإشارة إلى أنّ تطبيقك لا يمكنه تقديم الطلب المقصود. ولا يمكن أن يُنشئ سوى مشروع Developer Console الخاص بمعرِّف عميل OAuth الذي أنشأ المورد.
UserIneligibleToUpdateGradingPeriodSettings
يشير الرمز UserIneligibleToUpdateGradingPeriodSettings
إلى أنّ الطلب
حاول تعديل إعدادات فترة التقييم في دورة تدريبية لا يملك فيها
المستخدم المُقدّم للطلب أو مالك الدورة التدريبية ترخيص Google Workspace for
Education المناسب.
الإجراء المحتمَل: يُرجى الإشارة إلى أنّ تطبيقك لا يمكنه تقديم الطلب المقصود لتعديل إعدادات فترة التقييم بسبب حالة ترخيص المستخدم الذي يقدّم الطلب أو مالك الدورة التدريبية. يمكن منح التراخيص في "وحدة تحكّم المشرف في Google".
HTTP 429: RESOURCE_EXHAUSTED
يتم عرض الرمز RESOURCE_EXHAUSTED
عندما لا يكون الإجراء المطلوب مسموحًا به
لأنّه تم استنفاد بعض الموارد، مثل الحصة أو سعة الخادم. تحدث عادةً
هذه الأنواع من أخطاء الطلبات لأنّ تطبيقك يُنشئ حمولة
مفرطة.
لتجنُّب تجاوز هذه الحدود وزيادة موثوقية تطبيقك، استخدِم آليات إعادة المحاولة. تشمل آليات إعادة المحاولة الصالحة ما يلي:
استخدِم ميزة "التراجع الأسي المقتطع" لإعادة محاولة إرسال الطلب وزيادة معدل نقل البيانات إلى أقصى حد للطلبات في البيئات المتزامنة.
لتجنُّب حدوث تداخلات، ننصحك باستخدام خوارزمية الرقود الأسي المقتطع مع التشويش. يمكن أن يساعد إدخال الارتعاش في نجاح طلباتك بشكل أسرع من خلال إدخال تأخّر chaotico ينشر الارتفاعات في الطلبات.
إذا كان تطبيقك يعرض RESOURCE_EXHAUSTED
خطأ بسبب قيود
الحصة، أرسِل طلبًا لزيادة الحصة. لمزيد من المعلومات، يُرجى الرجوع إلى مقالة "مركز المساعدة" حول
حصص Monitor API.
UserCourseJoinRateLimitReached
يشير الرمز UserCourseJoinRateLimitReached
إلى أنّ المستخدم سبق له الانضمام
إلى الحد الأقصى المسموح به لعدد الدورات التدريبية في يوم واحد. لمزيد من المعلومات، يُرجى الرجوع
إلى قسم "دعوات المجموعات وحجمها" في مقالة "مركز المساعدة" بعنوان
فهم سياسات "مجموعات Google" وحدودها.
الإجراء المحتمَل: يمكنك وصف سبب الخطأ واقتراح أن ينتظر المستخدم يومًا واحدًا قبل الانضمام إلى الدورة التدريبية.
HTTP 500: INTERNAL
يشير الرمز INTERNAL
إلى حدوث خطأ غير متوقّع أثناء معالجة
الطلب. يمكن أيضًا حلّ أخطاء INTERNAL
في كثير من الأحيان باستخدام التراجع الدليلي
لإعادة محاولة إرسال الطلب. إذا استمر ظهور خطأ INTERNAL
، يمكن إعلامنا بالخطأ من خلال
الإبلاغ عن خطأ في
أداة تتبُّع المشاكل العامة في Classroom API.