Mensajes de error comunes de la API de Google Classroom

En esta página, se describen algunos mensajes de error, problemas y posibles acciones comunes de la API de Google Classroom para los siguientes tipos de errores:

HTTP 400: FAILED_PRECONDITION

Se muestra un FAILED_PRECONDITION cuando el usuario intenta realizar una acción que no se puede permitir, ya sea porque alcanzó un límite o un estado de la aplicación, como CourseNotModifiable. Para corregir un FAILED_PRECONDITION, indícale al usuario que realice alguna acción y, luego, vuelve a intentarlo. O bien, en algunos casos, puedes usar extremos alternativos para corregir el estado en nombre del usuario.

AttachmentNotVisible

AttachmentNotVisible indica que uno o más archivos adjuntos especificados no son visibles para el usuario, no son del tipo solicitado o no existen. Por ejemplo, los elementos de Drive que no se compartieron con el usuario mostrarán este error.

Posible acción: Describe la causa de la falla y sugiere que el usuario vuelva a verificar los identificadores, como los IDs de archivos de Drive, que incluyó. Además, asegúrate de que el usuario tenga los permisos adecuados para ver el archivo adjunto.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indica que es posible que no se pueda quitar el propietario de la carpeta de Drive del curso.

Posible acción: Describe la causa del error y sugiere que el usuario transfiera la propiedad de la carpeta de Drive del curso a otro usuario y vuelva a intentarlo.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indica que no se puede quitar el propietario del curso.

Posible acción: Describe la causa del error y sugiere que es posible que no se pueda quitar el propietario del curso. En la mayoría de los casos, el usuario intenta quitarse, lo que no está permitido.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indica que es posible que no se pueda quitar el propietario del curso porque la transferencia de la propiedad de esta clase aún está en curso.

Posible acción: Describe la causa de la falla y sugiere que el usuario espere unos momentos hasta que se complete la acción asíncrona de transferir la propiedad de la clase y, luego, vuelve a intentarlo.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indica que no se puede quitar un profesor de un curso sin propietario.

Posible acción: Describe la causa del error y sugiere que es posible que no se quite el profesor. En la mayoría de los casos, se borró la cuenta de usuario del propietario del curso, lo que provocó un estado de curso no válido.

CourseMemberLimitReached

CourseMemberLimitReached indica que la acción intentada superaría la cantidad máxima permitida de miembros del curso. Por lo general, students.create() muestra este código. Para obtener más información, consulta la sección "Límites de tamaño de la clase" del artículo del Centro de ayuda Cómo invitar a los estudiantes a una clase.

Posible acción: Describe la causa de la falla y sugiere que el usuario quite a los miembros del curso innecesarios.

CourseNotModifiable

CourseNotModifiable indica que el curso relevante está en un estado que no permite que se modifiquen sus propiedades (aparte del estado del curso en sí).

Acción posible: Pídele al usuario que cambie el curso a un estado modificable. Para cambiar el estado, usa courses.patch(). El estado del curso se puede cambiar en una solicitud que cambie otras propiedades.

CourseTeacherLimitReached

CourseTeacherLimitReached indica que la acción solicitada superaría la cantidad máxima permitida de profesores del curso. Por lo general, teachers.create() muestra este código. Para obtener más información, consulta la sección "Limitaciones de tamaño de la clase" del artículo del Centro de ayuda Cómo agregar a un profesor adjunto a una clase.

Posible acción: Describe la causa del error y sugiere que el usuario quite a los profesores del curso innecesarios. Si corresponde a tu app, puedes usar teachers.delete() para administrar las listas de profesores en nombre del usuario.

InactiveCourseOwner

InactiveCourseOwner indica que no se permite la acción solicitada porque se borró la cuenta del propietario del curso. El administrador del propietario del curso debe restablecer la cuenta del propietario antes de realizar la acción solicitada.

Posible acción: Describe la causa del error y sugiere que el administrador restablezca la cuenta del propietario del curso antes de volver a intentar la operación.

IneligibleOwner

IneligibleOwner indica que no se puede agregar al usuario como propietario del curso porque no es cotitular.

Acción posible: Describe la causa de la falla. Si el usuario solicitante no es un administrador, sugiera que primero le envíe una invitación para que sea profesor en el curso antes de actualizar al propietario. Si el usuario solicitante es un administrador, sugierele que primero lo agregue como cotitular del curso.

PendingInvitationExists

PendingInvitationExists indica que ya se invitó a alguien a asumir la propiedad del curso. Este error se produce durante la transferencia de la propiedad del curso cuando se inició una transferencia anteriormente, pero el nuevo propietario aún no la aceptó.

UserCannotOwnCourse

UserCannotOwnCourse indica que no se puede agregar al usuario como propietario del curso.

Posible acción: Describe la causa del error y sugiere que el curso no se puede crear con el usuario como propietario. Es posible que un usuario solicitante que no sea administrador vea este error si intenta crear un curso con un usuario que no sea él mismo como propietario. Es posible que un usuario solicitante de administrador vea este error si la cuenta de usuario especificada como propietario no existe o si el usuario no está en su dominio.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indica que el usuario ya es miembro de la cantidad máxima de grupos permitida y no puede unirse a ningún curso. Por lo general, students.create() o teachers.create() muestran este código. Para obtener más información, consulta la sección "Limitaciones de tamaño de la clase" del artículo del Centro de ayuda sobre Cómo invitar a los alumnos a una clase.

Posible acción: Describe la causa de la falla y sugiere que el usuario abandone los cursos en los que no participa. El usuario puede considerar crear una cuenta adicional si necesita participar en más cursos. Si corresponde a tu app, puedes usar students.create() o teachers.delete() para administrar las listas en nombre del usuario.

HTTP 403: PERMISSION_DENIED

Es posible que todos los métodos de la API de Classroom muestren un error PERMISSION_DENIED (HTTP 403) si un usuario final no cumple con los requisitos previos para el acceso. El mensaje que acompaña al error contiene un mensaje de error para ayudarte a identificar la causa y dirigir a los usuarios a tomar la acción adecuada.

En las siguientes secciones, se describen los mensajes de error comunes de la API de Classroom.

CannotDirectAddUser

CannotDirectAddUser indica que no se puede agregar un usuario directamente al curso. Este código se produce cuando un administrador de dominio intenta agregar un usuario a un curso y ese usuario no tiene una dirección de correo electrónico o no pertenece al dominio.

Posible acción: Describe la causa del error y sugiere que el administrador del dominio verifique que la cuenta de usuario exista y esté dentro del dominio del administrador del curso.

ClassroomApiDisabled

ClassroomApiDisabled indica que el usuario solicitante no tiene acceso a la API de Classroom.

Posible acción: Dirige al usuario a las instrucciones para habilitar el acceso a los datos de Classroom. Consulta también ClassroomDisabled, ya que es posible que el usuario esté usando la cuenta equivocada.

ClassroomDisabled

ClassroomDisabled indica que el usuario solicitante no tiene acceso a Classroom.

Posible acción: Dirige al usuario a las instrucciones para habilitar el acceso a Classroom. Es posible que el usuario esté usando la cuenta incorrecta, por lo que también puedes proporcionar un vínculo para usar varias cuentas, de modo que el usuario pueda seleccionar la cuenta correcta.

ExpiredAddOnToken

ExpiredAddOnToken indica que el token del complemento que se usa para realizar llamadas a la API venció.

Posible acción: Pídele al usuario que actualice la página o que vuelva a acceder al complemento para que puedas obtener el nuevo parámetro de consulta addOnToken de la URL de solicitud.

InvalidAddOnToken

InvalidAddOnToken indica que el token del complemento que se pasa en una solicitud no está autorizado para crear un archivo adjunto del complemento en la tarea.

Posible acción: Este error puede ocurrir si el usuario accede al complemento con una cuenta diferente a la de Classroom. Pídele al usuario que salga de todas las demás cuentas en el navegador o que abra Classroom en una ventana de incógnito de Chrome.

ProjectPermissionDenied

ProjectPermissionDenied indica que la solicitud intentó modificar un recurso asociado con un proyecto de Play Console diferente.

Acción posible: Indica que tu aplicación no puede realizar la solicitud deseada. Solo puede hacerlo el proyecto de Play Console del ID de cliente de OAuth que creó el recurso.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indica que la solicitud intentó modificar la configuración del período de calificación en un curso en el que el usuario solicitante o el propietario del curso no tienen la licencia adecuada de Google Workspace for Education.

Posible acción: Indica que tu aplicación no puede realizar la solicitud prevista para actualizar la configuración del período de calificación debido al estado de la licencia del usuario solicitante o del propietario del curso. Las licencias se pueden asignar en la Consola del administrador de Google.

HTTP 429: RESOURCE_EXHAUSTED

Se muestra RESOURCE_EXHAUSTED cuando no se permite la acción solicitada porque se agotó algún recurso, como la cuota o la capacidad del servidor. Por lo general, estos tipos de errores de solicitud ocurren porque tu app produjo una carga excesiva.

Para evitar activar estos límites y aumentar la confiabilidad de tu aplicación, usa mecanismos de reintento. Entre los mecanismos de reintento válidos, se incluyen los siguientes:

  • Usa la retirada exponencial truncada para reintentar la solicitud y maximizar la capacidad de procesamiento de solicitudes en entornos simultáneos.

  • Para evitar colisiones, considera usar una retirada exponencial truncada con jitter. La introducción de jitter puede ayudar a que tus solicitudes se realicen con más rapidez, ya que agrega una demora aleatoria que distribuye los picos en las solicitudes.

Si tu aplicación muestra errores RESOURCE_EXHAUSTED debido a limitaciones de cuota, envía una solicitud de aumento de cuota. Para obtener más información, consulta el artículo del Centro de ayuda sobre cómo supervisar las cuotas de la API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indica que el usuario ya se unió a la cantidad máxima de cursos permitidos en un día. Para obtener más información, consulta la sección "Invitaciones y tamaño de los grupos" del artículo del Centro de ayuda Información sobre las políticas y los límites de los grupos.

Posible acción: Describe la causa de la falla y sugiere que el usuario espere un día antes de unirse al curso.

HTTP 500: INTERNAL

INTERNAL indica que se produjo un error inesperado mientras se procesaba la solicitud. Los errores de solicitud INTERNAL también se pueden resolver con frecuencia mediante el uso de una retirada exponencial para reintentar la solicitud. Si persiste un error INTERNAL, puedes informarlo mediante el envío de un error al seguimiento de problemas público de la API de Classroom.