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 el usuario alcanzó un límite o un estado de la aplicación, como CourseNotModifiable. Para corregir un FAILED_PRECONDITION, indica al usuario que realice alguna acción y, luego, vuelva 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ían este error.
Acción posible: Describe la causa de la falla y sugiere que el usuario vuelva a verificar los identificadores que incluyó, como los IDs de archivos de Drive. Además, asegúrate de que el usuario tenga los permisos adecuados para ver el archivo adjunto.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner indica que no se puede quitar el propietario de la carpeta de Drive del curso.
Acción posible: Describe la causa de la falla 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.
Acción posible: Describe la causa de la falla y sugiere que no se puede quitar el propietario del curso. En la mayoría de los casos, el usuario intenta quitarse a sí mismo, lo que no está permitido.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete indica que no se puede quitar el propietario del curso porque la transferencia de propiedad de esta clase aún está en curso.
Acción posible: Describe la causa de la falla y sugiere que el usuario espere unos momentos para que se complete la acción asíncrona de transferir la propiedad de la clase y, luego, vuelva a intentarlo.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner indica que no se puede quitar un profesor de un curso sin propietario.
Acción posible: Describe la causa de la falla y sugiere que no se puede quitar 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 excedería la cantidad máxima permitida de miembros del curso. Por lo general, este código se muestra en el
students.create()
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 Invitar
a estudiantes a tu clase.
Acción posible: Describe la causa de la falla y sugiere que el usuario quite los miembros innecesarios del curso.
CourseNotModifiable
CourseNotModifiable indica que el curso pertinente está en un estado que no permite modificar sus propiedades (aparte del estado del curso en sí).
Acción posible: Solicita al usuario que cambie el curso a un estado de curso modificable. Para cambiar
el estado, usa
courses.patch(). El estado del curso se puede cambiar en una solicitud que cambia otras propiedades.
CourseTeacherLimitReached
CourseTeacherLimitReached indica que la acción solicitada excedería la cantidad máxima permitida de profesores del curso. Por lo general, este código se muestra en
el teachers.create()
método. Para obtener más información, consulta la sección "Limitaciones de tamaño de la clase"
del artículo del Centro de ayuda Agregar un profesor adjunto a una clase.
Acción posible: Describe la causa de la falla y sugiere que el usuario
quite los profesores innecesarios del curso. Si corresponde a tu app, puedes usar el
teachers.delete()
método para administrar las listas de profesores en nombre del usuario.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl indica que no se permite la acción solicitada porque introduciría una URL en el título del curso. No se admiten patrones de URL en los títulos de los cursos.
Acción posible: Describe la causa de la falla y sugiere que el usuario
quite el patrón de URL del campo title. Se permiten URLs en el campo description.
CourseTopicLimitReached
CourseTopicLimitReached indica que la acción solicitada excedería la cantidad máxima permitida de temas en un curso. Por lo general, este código se muestra en el método
courses.topics.create().
Acción posible: Describe la causa de la falla y sugiere que el usuario
quite los temas innecesarios. Si corresponde a tu app, puedes usar el
courses.topics.delete()
método para administrar los temas en nombre del usuario.
EmptyAssignees
EmptyAssignees indica que la acción solicitada quitaría a todos los destinatarios del trabajo de clase correspondiente. No se admite el trabajo de clase sin destinatarios.
Acción posible: Describe la causa de la falla y sugiere que el propietario del curso no puede quitar a todos los destinatarios.
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 del curso antes de realizar la acción solicitada.
Acción posible: Describe la causa de la falla 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 un profesor adjunto.
Acción posible: Describe la causa de la falla. Si el usuario solicitante no es un administrador, sugiere que primero le envíe al usuario una invitación para ser profesor del curso antes de actualizar el propietario. Si el usuario solicitante es un administrador, sugiere que primero agregue al usuario como profesor adjunto del curso.
ListCoursesStudentAndTeacherFilter
ListCoursesStudentAndTeacherFilter ocurre cuando se realiza una
courses.list() solicitud con
ambos teacherId y studentId campos completados. Solo se puede configurar uno de estos campos en una sola solicitud.
Aun así, puedes obtener una lista de cursos con usuarios específicos de estudiantes y profesores realizando dos solicitudes independientes. Primero, recupera los cursos del usuario profesor realizando una solicitud courses.list() con el campo teacherId completado y, luego, realiza otra solicitud courses.list() con el campo studentId completado.
Calcula la intersección de los resultados para obtener la lista de cursos que coinciden en ambos usuarios.
PendingInvitationExists
PendingInvitationExists indica que ya se invitó a alguien a tomar la propiedad del curso. Este error se produce durante la transferencia de 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.
Acción posible: Describe la causa de la falla y sugiere que no se puede crear el curso con el usuario como propietario del curso. Un usuario solicitante que no sea administrador puede ver este error si intenta crear un curso con un usuario que no sea él mismo como propietario. Un usuario solicitante que sea administrador puede ver 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 permitida de grupos y no puede unirse a ningún curso. Este código se
muestra en
students.create()
o
teachers.create().
Para obtener más información, consulta la sección "Limitaciones de tamaño de la clase" del
artículo del Centro de ayuda Invitar a estudiantes a tu clase.
Acción posible: 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
Todos los métodos de la API de Classroom pueden mostrar 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 para que realicen 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 ocurre 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.
Acción posible: Describe la causa de la falla y sugiere que el administrador de dominio verifique que la cuenta de usuario exista y esté dentro del dominio del administrador del curso.
CannotInviteUserInUntrustedDomain
CannotInviteUserInUntrustedDomain indica que el usuario que se invita o
crea no está dentro del mismo dominio que el llamador o de un dominio de confianza
del llamador. En el caso de los llamadores con una licencia de Google Workspace for Education Fundamentals, no se pueden agregar ni invitar directamente a un
curso a los usuarios externos al dominio que no son de confianza.
Acción posible: Describe la causa de la falla y sugiere que el llamador considere una de las siguientes opciones:
- Incluye los dominios de los usuarios que llaman y reciben en la lista de trusted domains de cada uno y vuelve a intentarlo.
- Sugiere que el llamador comparta manualmente un vínculo de invitación al curso o un código de clase. Ten en cuenta que esto requiere que un administrador configure las invitaciones externas al dominio. Consulta Invitar a estudiantes a tu clase para obtener más información.
- Sugiere que el llamador actualice a la licencia pagada de Google Workspace for Education, ya que la limitación solo se aplica a la licencia de Fundamentals.
ClassroomApiDisabled
ClassroomApiDisabled indica que el usuario solicitante no tiene acceso a la API de Classroom.
Acción posible: 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 incorrecta.
ClassroomDisabled
ClassroomDisabled indica que el usuario solicitante no tiene acceso a Classroom.
Acción posible: Dirige al usuario a las instrucciones para habilitar el acceso a Classroom. Es posible que el usuario también esté usando la cuenta incorrecta, por lo que también puedes proporcionar un vínculo para usar varias cuentas para que el usuario pueda seleccionar la cuenta correcta.
ExpiredAddOnToken
ExpiredAddOnToken indica que venció el token del complemento que se usa para realizar llamadas a la API.
Acción posible: Solicita al usuario que actualice la página o vuelva a acceder al complemento
para que puedas obtener el nuevo parámetro de consulta addOnToken de la URL de la solicitud.
InvalidAddOnToken
InvalidAddOnToken indica que el token del complemento que se pasó en una solicitud no está autorizado para crear un archivo adjunto del complemento en la tarea.
Acción posible: Este error se puede generar si el usuario accede al complemento con una cuenta diferente a la cuenta de Classroom. Indica 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 diferente de la consola para desarrolladores.
Acción posible: Indica que tu aplicación no puede realizar la solicitud deseada. Solo puede realizarla el proyecto de la consola para desarrolladores del OAuth ID de cliente que creó el recurso.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings indica que la solicitud intentó modificar la configuración del período de calificaciones en un curso en el que el usuario solicitante o el propietario del curso no tienen la licencia adecuada de Google Workspace for Education, o bien el usuario solicitante no es un profesor del curso ni un administrador de dominio.
Acción posible: Indica que tu aplicación no puede realizar la solicitud deseada para actualizar la configuración del período de calificaciones debido al estado de la licencia o del rol 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 la retirada exponencial truncada con jitter. La introducción de jitter puede ayudar a que tus solicitudes tengan éxito más rápido, ya que introduce 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 un aumento de cuota. Para obtener más información, consulta el
artículo del Centro de ayuda Supervisar las cuotas de la API.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached indica que el usuario ya se unió a la cantidad máxima permitida de cursos 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.
Acción posible: 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 surgió un error inesperado mientras se procesaba la solicitud. Los errores de solicitud INTERNAL también se pueden resolver con frecuencia usando la retirada exponencial para reintentar la solicitud. Si persiste un error INTERNAL, puedes informarlo
presentando un error en el rastreador de problemas públicos de la API de Classroom.