رسائل الخطأ الشائعة في Google Classroom API

توضّح هذه الصفحة بعض رسائل الخطأ والمشاكل والإجراءات المحتملة الشائعة في Google Classroom API للأنواع التالية من الأخطاء:

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.