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
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
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.