أخطاء في الطلبات
يمكن أن يحتوي الخطأ في Classroom API على رمز خطأ لمساعدتك في تحديد سبب الخطأ والتعامل معه بشكل سليم. واستنادًا إلى الرمز، يمكنك إعادة محاولة الطلب أو توجيه المستخدمين لاتخاذ إجراء معيّن.
تعرض هذه الصفحة تفاصيل رموز الخطأ المحتمَلة، مجمّعة حسب رمز HTTP. لقراءة مزيد من المعلومات عن بنية رسالة الخطأ، يمكنك الرجوع إلى بنية رسالة الخطأ.
تعرض هذه الصفحة تفاصيل رموز الخطأ المحتمَلة، مجمّعة حسب رمز HTTP. راجِع الوثائق المرجعية لتحديد الطرق التي تعرض رمز خطأ معيّنًا.
HTTP 400: FAILED_PRECONDITION
يتم عرض FAILED_PRECONDITION
عندما يحاول المستخدم تنفيذ إجراء غير مسموح به، إما بسبب بلوغ المستخدم الحدّ الأقصى أو إحدى حالات التطبيق، مثل CourseNotModifiable
. لإصلاح FAILED_PRECONDITION
، يمكنك أن تطلب من المستخدم اتخاذ إجراء ثم إعادة المحاولة. وقد يتم في بعض الحالات استخدام نقاط نهاية بديلة لإصلاح الحالة نيابةً عن المستخدم.
PendingInvitationExists
تشير السمة PendingInvitationExists
إلى أنه تمت دعوة أحد المستخدمين من قبل لإسناد ملكية الدورة التدريبية. يحدث هذا الخطأ أثناء نقل ملكية الدورة التدريبية عندما بدأت عملية النقل سابقًا ولكن لم يقبلها المالك الجديد بعد.
CourseMemberLimitReached
تشير السمة CourseMemberLimitReached
إلى أنّ الإجراء الذي تحاول تنفيذه سيتجاوز الحد الأقصى المسموح به لعدد أعضاء الدورة التدريبية. يتم عادةً عرض هذا الرمز من خلال students.create()
. لمزيد من المعلومات، يُرجى الاطّلاع على قسم "حدود حجم الصف" في مقالة مركز المساعدة دعوة الطلاب إلى صف.
الإجراء المحتمل: يُرجى وصف سبب الإخفاق واقتراح إزالة المستخدم لأعضاء الدورة الدراسية غير الضروريين.
CourseNotModifiable
تشير السمة CourseNotModifiable
إلى أنّ الدورة التدريبية ذات الصلة لا تسمح بتعديل خصائصها (باستثناء حالة الدورة التدريبية نفسها).
الإجراء المحتمل: اطلب من المستخدم تغيير الدورة التدريبية إلى حالة دورة تدريبية قابلة للتعديل. لتغيير الحالة، استخدِم courses.patch()
. يمكن تغيير حالة الدورة الدراسية في طلب يؤدي إلى تغيير المواقع الأخرى.
CourseTeacherLimitReached
تشير السمة CourseTeacherLimitReached
إلى أنّ الإجراء المطلوب سيتجاوز الحد الأقصى المسموح به لعدد معلّمي الدورة التدريبية. ويتم عادةً عرض هذا الرمز من خلال teachers.create()
. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على قسم "القيود المفروضة على حجم الصف" في مقالة مركز المساعدة إضافة معلّم مساعد إلى صف.
الإجراء المحتمل: يُرجى وصف سبب الإخفاق واقتراح إزالة المستخدم لمعلمي الدورة التدريبية غير الضروري. يمكنك استخدام teachers.delete() لإدارة قوائم المعلّمين نيابةً عن المستخدم إذا كان ذلك منطبقًا على تطبيقك.
UserGroupsMembershipLimitReached
تشير السمة UserGroupsMembershipLimitReached
إلى أنّ المستخدم عضو حاليًا في الحد الأقصى المسموح به لعدد المجموعات ولا يمكنه الانضمام إلى أي دورات تدريبية. يعرض هذا الرمز عادةً students.create()
أو teachers.create()
. لمعرفة المزيد من المعلومات، يُرجى الاطّلاع على قسم "قيود حجم الصف" في مقالة مركز المساعدة دعوة الطلاب إلى صف.
الإجراء المحتمل: يمكنك وصف سبب الإخفاق واقتراح مغادرة المستخدم أي دورات لا يشارك فيها. قد يفكر المستخدم في إنشاء حساب إضافي إذا كان بحاجة إلى المشاركة في المزيد من الدورات التدريبية. يمكنك استخدام students.create()
أو teachers.delete()
لإدارة قوائم الطلاب المسجّلين نيابةً عن المستخدم، إذا كان ذلك منطبقًا على تطبيقك.
AttachmentNotVisible
يشير AttachmentNotVisible
إلى أن مرفقًا واحدًا أو أكثر من المرفقات المحددة ليس مرئيًا للمستخدم، أو ليس من النوع المطلوب، أو غير موجود. على سبيل المثال، عناصر Drive التي لم تتم مشاركتها مع المستخدم ستعرض هذا الخطأ.
الإجراء المحتمل: صِف سبب الفشل واقترح إعادة فحص المعرفات، مثل مُعرِّفات ملفات Drive، التي تم تضمينها. تأكد أيضًا من أن المستخدم لديه الأذونات المناسبة لعرض المرفق.
CannotRemoveCourseFolderOwner
تشير القيمة CannotRemoveCourseFolderOwner
إلى إمكانية عدم إزالة مالك مجلد Drive للدورة التدريبية.
الإجراء المحتمل: يُرجى وصف سبب الفشل واقتراح نقل ملكية مجلد Drive للدورة التدريبية إلى مستخدم آخر وإعادة المحاولة.
CannotRemoveCourseOwner
تشير السمة CannotRemoveCourseOwner
إلى احتمالية عدم إزالة مالك الدورة الدراسية.
الإجراء المحتمل: صِف سبب الإخفاق واقترح عدم إزالة مالك الدورة الدراسية. يحاول المستخدم في معظم الحالات إزالة نفسه، وهو أمر غير مسموح به.
CannotRemoveCourseOwnerTransferIncomplete
تشير السمة CannotRemoveCourseOwnerTransferIncomplete
إلى أنّه قد لا تتم إزالة مالك الدورة الدراسية لأنّ عملية نقل ملكية هذا الصف لا تزال قيد التقدم.
الإجراء المحتمل: صِف سبب الإخفاق واقترح أن ينتظر المستخدم بضع لحظات حتى يكتمل الإجراء غير المتزامن لنقل ملكية الصف، ثم حاول مرة أخرى.
CannotRemoveTeacherWithNoCourseOwner
تشير السمة CannotRemoveTeacherWithNoCourseOwner
إلى أنّه قد لا تتم إزالة معلّم من دورة دراسية بدون مالك.
الإجراء المحتمل: صِف سبب الإخفاق واقترح عدم إزالة المعلّم. في معظم الحالات، تم حذف حساب المستخدم الخاص بمالك الدورة الدراسية، ما يتسبب في أن تكون حالة الدورة الدراسية غير صالحة.
InactiveCourseOwner
تشير السمة InactiveCourseOwner
إلى أنّ الإجراء المطلوب غير مسموح به لأنّه تم حذف حساب مالك الدورة الدراسية. على مشرف مالك الدورة الدراسية استعادة حساب مالك الدورة الدراسية قبل اتخاذ الإجراء المطلوب.
الإجراء المحتمل: يُرجى وصف سبب التعذُّر واقتراح أن يقوم المشرف باستعادة حساب مالك الدورة الدراسية قبل إعادة محاولة العملية.
IneligibleOwner
تشير دالة IneligibleOwner
إلى أنّه لا يمكن إضافة المستخدم كمالك للدورة التدريبية لأنّ المستخدم ليس معلّمًا مساعدًا.
الإجراء المحتمل: يُرجى توضيح سبب تعذّر التثبيت. إذا لم يكن المستخدم الذي قدّم الطلب مشرفًا، يمكنك اقتراح أنّه يرسل أولاً دعوة إلى المستخدم لكي يكون معلّمًا في الدورة التدريبية قبل تحديث المالك. إذا كان المستخدم الذي قدّم الطلب مشرفًا، يمكنك اقتراح إضافة المستخدم أولاً كمعلّم مساعد في الدورة التدريبية.
UserCannotOwnCourse
وتشير القيمة UserCannotOwnCourse
إلى أنّه لا يمكن إضافة المستخدم كمالك للدورة التدريبية.
الإجراء المحتمل: صِف سبب الإخفاق واقترح عدم إمكانية إنشاء الدورة الدراسية من خلال المستخدم بصفته مالك الدورة الدراسية. قد يظهر هذا الخطأ للمستخدم الذي لا يقدّم طلب الحصول على مشرف في حال محاولة إنشاء دورة تدريبية مع مستخدم آخر غير نفسه بصفته المالك. قد يظهر هذا الخطأ للمشرف الذي يطالب المستخدم إذا كان حساب المستخدم المحدد كالمالك غير موجود أو إذا لم يكن المستخدم في نطاقه.
HTTP 429: RESOURCE_EXHAUSTED
يتم عرض RESOURCE_EXHAUSTED
عندما يكون الإجراء المطلوب غير مسموح به بسبب استنفاد بعض الموارد، مثل الحصة أو سعة الخادم. تحدث هذه الأنواع من أخطاء الطلبات عادةً بسبب إنشاء تطبيقك حملاً زائدًا.
لتجنب تشغيل هذه الحدود وزيادة موثوقية تطبيقك، استخدم آليات إعادة المحاولة. تشمل آليات إعادة المحاولة الصالحة ما يلي:
يمكنك استخدام خاصية التراجع الأُسيّ المُقتطَع لإعادة محاولة الطلب وزيادة سرعة معالجة الطلبات في البيئات المتزامنة.
لتجنب الاصطدامات، ضع في الاعتبار تراجع أُسيّ مقتطَع مع عدم استقرار. يمكن أن يساعد تقديم "عدم الاستقرار" في نجاح طلباتك بشكل أسرع من خلال تقديم تأخير عشوائي يؤدي إلى نشر الزيادة في الطلبات.
إذا عرض تطبيقك أخطاء RESOURCE_EXHAUSTED
بسبب قيود الحصة، أرسِل زيادة في الحصة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة مركز المساعدة مراقبة حصص واجهة برمجة التطبيقات.
UserCourseJoinRateLimitReached
تشير القيمة UserCourseJoinRateLimitReached
إلى أنّ المستخدم قد انضم إلى الحد الأقصى المسموح به من الدورات التدريبية في يوم واحد. لمزيد من المعلومات، يمكنك الاطّلاع على قسم "دعوات المجموعة وحجمها" في مقالة مركز المساعدة فهم سياسات "مجموعات Google" وحدودها.
الإجراء المحتمل: صِف سبب الإخفاق واقترح أن ينتظر المستخدم يومًا واحدًا قبل الانضمام إلى الدورة التدريبية.
HTTP 500: INTERNAL
تشير القيمة INTERNAL
إلى حدوث خطأ غير متوقّع أثناء معالجة الطلب. يمكن أيضًا في أغلب الأحيان حل أخطاء طلب INTERNAL
باستخدام ميزة "التراجع الأسي" لإعادة محاولة الطلب. في حال استمرار خطأ INTERNAL
، يمكن الإبلاغ عنه من خلال تقديم خطأ على أداة تتبُّع المشاكل العلنية في Classroom API.