Messages d'erreur courants de l'API Google Classroom

Cette page décrit certains messages d'erreur et problèmes courants de l'API Google Classroom, ainsi que les actions possibles pour les types d'erreurs suivants:

HTTP 400: FAILED_PRECONDITION

Un FAILED_PRECONDITION est renvoyé lorsque l'utilisateur tente une action qui ne peut pas être autorisée, soit parce qu'il a atteint une limite ou un état d'application, comme CourseNotModifiable. Pour résoudre un FAILED_PRECONDITION, demandez à l'utilisateur d'effectuer une action, puis réessayez. Dans certains cas, vous pouvez également utiliser d'autres points de terminaison pour corriger l'état au nom de l'utilisateur.

AttachmentNotVisible

AttachmentNotVisible indique qu'une ou plusieurs pièces jointes spécifiées ne sont pas visibles par l'utilisateur, ne correspondent pas au type demandé ou n'existent pas. Par exemple, les éléments Drive qui n'ont pas été partagés avec l'utilisateur génèrent cette erreur.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de vérifier à nouveau les identifiants (par exemple, les ID de fichier Drive) qu'il a inclus. Assurez-vous également que l'utilisateur dispose des autorisations appropriées pour afficher la pièce jointe.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indique que le propriétaire du dossier Drive du cours ne peut pas être supprimé.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de transférer la propriété du dossier Drive du cours à un autre utilisateur, puis de réessayer.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indique que le propriétaire du cours ne peut pas être supprimé.

Action possible : décrivez la cause de l'échec et suggérez que le propriétaire du cours ne soit pas supprimé. Dans la plupart des cas, l'utilisateur tente de se supprimer, ce qui n'est pas autorisé.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indique que le propriétaire du cours ne peut pas être supprimé, car le transfert de propriété de ce cours est toujours en cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur d'attendre quelques instants que l'action asynchrone de transfert de la propriété du cours soit terminée, puis de réessayer.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indique qu'un enseignant ne peut pas être supprimé d'un cours sans propriétaire.

Action possible : décrivez la cause de l'échec et suggérez que l'enseignant ne soit pas supprimé. Dans la plupart des cas, le compte utilisateur du propriétaire du cours a été supprimé, ce qui a entraîné un état de cours incorrect.

CourseMemberLimitReached

CourseMemberLimitReached indique que l'action tentée dépasserait le nombre maximal de membres du cours autorisé. Ce code est généralement renvoyé par students.create(). Pour en savoir plus, consultez la section "Limites de taille de cours" de l'article du centre d'aide Inviter des élèves à un cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de supprimer les membres de cours inutiles.

CourseNotModifiable

CourseNotModifiable indique que le cours concerné est dans un état qui n'autorise pas la modification de ses propriétés (à l'exception de l'état du cours lui-même).

Action possible : invitez l'utilisateur à définir le cours sur un état modifiable. Pour modifier l'état, utilisez courses.patch(). L'état du cours peut être modifié dans une requête qui modifie d'autres propriétés.

CourseTeacherLimitReached

CourseTeacherLimitReached indique que l'action demandée dépasserait le nombre maximal d'enseignants de cours autorisé. Ce code est généralement renvoyé par teachers.create(). Pour en savoir plus, consultez la section "Limites de taille des cours" de l'article du Centre d'aide Ajouter un enseignant invité à un cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de supprimer les enseignants de cours inutiles. Le cas échéant, vous pouvez utiliser teachers.delete() pour gérer les listes d'enseignants au nom de l'utilisateur.

InactiveCourseOwner

InactiveCourseOwner indique que l'action demandée n'est pas autorisée, car le compte du propriétaire du cours a été supprimé. L'administrateur du propriétaire du cours doit restaurer le compte du propriétaire du cours avant de prendre l'action demandée.

Action possible : décrivez la cause de l'échec et suggérez à l'administrateur de restaurer le compte du propriétaire du cours avant de réessayer l'opération.

IneligibleOwner

IneligibleOwner indique que l'utilisateur ne peut pas être ajouté en tant que propriétaire du cours, car il n'est pas co-enseignant.

Action possible : décrivez la cause de l'échec. Si l'utilisateur à l'origine de la demande n'est pas administrateur, suggérez-lui d'abord d'envoyer une invitation à l'utilisateur pour qu'il devienne enseignant dans le cours avant de modifier le propriétaire. Si l'utilisateur à l'origine de la demande est administrateur, suggérez-lui d'abord de l'ajouter en tant qu'enseignant invité au cours.

PendingInvitationExists

PendingInvitationExists indique qu'une personne a déjà été invitée à prendre possession du cours. Cette erreur se produit lors du transfert de propriété d'un cours lorsqu'un transfert a déjà été lancé, mais qu'il n'a pas encore été accepté par le nouveau propriétaire.

UserCannotOwnCourse

UserCannotOwnCourse indique que l'utilisateur ne peut pas être ajouté en tant que propriétaire du cours.

Action possible: décrivez la cause de l'échec et suggérez que le cours ne peut pas être créé avec l'utilisateur en tant que propriétaire. Un utilisateur non administrateur peut voir cette erreur s'il tente de créer un cours avec un autre utilisateur comme propriétaire. Un administrateur qui demande un utilisateur peut voir cette erreur si le compte utilisateur spécifié comme propriétaire n'existe pas ou si l'utilisateur ne fait pas partie de son domaine.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indique que l'utilisateur est déjà membre du nombre maximal de groupes autorisé et ne peut pas rejoindre de cours. Ce code est généralement renvoyé par students.create() ou teachers.create(). Pour en savoir plus, consultez la section "Limites de taille des cours" de l'article du centre d'aide Inviter des élèves à un cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de quitter les cours auxquels il ne participe pas. L'utilisateur peut envisager de créer un compte supplémentaire s'il doit participer à d'autres cours. Le cas échéant, vous pouvez utiliser students.create() ou teachers.delete() pour gérer les listes au nom de l'utilisateur.

HTTP 403: PERMISSION_DENIED

Toutes les méthodes de l'API Classroom peuvent renvoyer une erreur PERMISSION_DENIED (HTTP 403) si un utilisateur final ne remplit pas les conditions préalables requises pour l'accès. Le message accompagnant l'erreur contient un message d'erreur pour vous aider à identifier la cause et à inviter les utilisateurs à prendre les mesures appropriées.

Les sections suivantes décrivent les messages d'erreur courants de l'API Classroom.

CannotDirectAddUser

CannotDirectAddUser indique qu'un utilisateur ne peut pas être ajouté directement au cours. Ce code s'affiche lorsqu'un administrateur de domaine tente d'ajouter un utilisateur à un cours et que cet utilisateur n'a pas d'adresse e-mail ou n'appartient pas au domaine.

Action possible : décrivez la cause de l'échec et suggérez à l'administrateur de domaine de vérifier que le compte utilisateur existe et qu'il se trouve dans le domaine de l'administrateur du cours.

ClassroomApiDisabled

ClassroomApiDisabled indique que l'utilisateur à l'origine de la requête n'a pas accès à l'API Classroom.

Action possible : orientez l'utilisateur vers les instructions pour activer l'accès aux données Classroom. Consultez également ClassroomDisabled, car l'utilisateur utilise peut-être le mauvais compte.

ClassroomDisabled

ClassroomDisabled indique que l'utilisateur à l'origine de la requête n'a pas accès à Classroom.

Action possible : orientez l'utilisateur vers les instructions pour activer l'accès à Classroom. Il est également possible que l'utilisateur utilise le mauvais compte. Vous pouvez donc également fournir un lien vers la page Utiliser plusieurs comptes pour qu'il puisse sélectionner le bon compte.

ExpiredAddOnToken

ExpiredAddOnToken indique que le jeton du module complémentaire utilisé pour effectuer des appels à l'API a expiré.

Action possible: Invitez l'utilisateur à actualiser la page ou à se reconnecter au module complémentaire afin que vous puissiez obtenir le nouveau paramètre de requête addOnToken à partir de l'URL de la requête.

InvalidAddOnToken

InvalidAddOnToken indique que le jeton de module complémentaire transmis dans une requête n'est pas autorisé à créer une pièce jointe de module complémentaire pour le devoir.

Action possible: Cette erreur peut se produire si l'utilisateur se connecte au module complémentaire avec un compte différent de celui utilisé dans Classroom. Demandez à l'utilisateur de se déconnecter de tous les autres comptes dans le navigateur ou d'ouvrir Classroom dans une fenêtre Chrome de navigation privée.

ProjectPermissionDenied

ProjectPermissionDenied indique que la requête a tenté de modifier une ressource associée à un autre projet de la console de développement.

Action possible : indiquez que votre application ne peut pas effectuer la requête prévue. Il ne peut être effectué que par le projet de la console de développement de l'ID client OAuth ayant créé la ressource.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indique que la requête a tenté de modifier les paramètres de période de notation dans un cours pour lequel l'utilisateur à l'origine de la requête ou le propriétaire du cours ne dispose pas de la licence Google Workspace for Education appropriée.

Action possible : indiquez que votre application ne peut pas effectuer la requête prévue pour mettre à jour les paramètres de la période de notation en raison de l'état de licence de l'utilisateur à l'origine de la demande ou du propriétaire du cours. Vous pouvez attribuer des licences dans la console d'administration Google.

HTTP 429: RESOURCE_EXHAUSTED

RESOURCE_EXHAUSTED est renvoyé lorsque l'action demandée n'est pas autorisée, car une ressource, telle qu'un quota ou la capacité du serveur, est épuisée. Ces types d'erreurs de requête se produisent généralement parce que votre application a généré une charge excessive.

Pour éviter de déclencher ces limites et augmenter la fiabilité de votre application, utilisez des mécanismes de nouvelle tentative. Voici quelques exemples de mécanismes de nouvelle tentative valides:

  • Utilisez un intervalle exponentiel tronqué entre les tentatives pour relancer la requête et optimiser le débit des requêtes dans les environnements avec simultanéité.

  • Pour éviter les collisions, envisagez d'utiliser un intervalle exponentiel tronqué entre les tentatives avec une gigue. L'introduction d'un jitter peut vous aider à traiter vos requêtes plus rapidement en introduisant un délai aléatoire qui répartit les pics de requêtes.

Si votre application renvoie des erreurs RESOURCE_EXHAUSTED en raison de limites de quota, demandez une augmentation de quota. Pour en savoir plus, consultez l'article du centre d'aide Surveiller les quotas d'API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indique que l'utilisateur a déjà rejoint le nombre maximal de cours autorisé en une journée. Pour en savoir plus, consultez la section "Invitations et taille des groupes" de l'article du centre d'aide Comprendre les règles et les limites applicables aux groupes.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur d'attendre un jour avant de rejoindre le cours.

HTTP 500: INTERNAL

INTERNAL indique qu'une erreur inattendue s'est produite lors du traitement de la requête. Les erreurs de requête INTERNAL peuvent également souvent être résolues en utilisant un intervalle exponentiel entre les tentatives pour relancer la requête. Si une erreur INTERNAL persiste, vous pouvez la signaler en enregistrant un bug dans l'outil public de suivi des problèmes de l'API Classroom.