Mensagens de erro comuns da API Google Classroom

Esta página descreve algumas mensagens de erro, problemas e possíveis ações comuns da API Google Classroom para os seguintes tipos de erros:

HTTP 400: FAILED_PRECONDITION

Um FAILED_PRECONDITION é retornado quando o usuário tenta uma ação que não pode ser permitida, seja porque ele atingiu um limite ou um estado de aplicativo, como CourseNotModifiable. Para corrigir um FAILED_PRECONDITION, instrua o usuário a realizar alguma ação e tente novamente. Em alguns casos, também é possível usar endpoints alternativos para corrigir o estado em nome do usuário.

AttachmentNotVisible

AttachmentNotVisible indica que um ou mais anexos especificados não estão visíveis para o usuário, não são do tipo solicitado ou não existem. Por exemplo, os itens do Drive que não foram compartilhados com o usuário retornariam esse erro.

Ação possível: descreva a causa da falha e sugira que o usuário verifique novamente os identificadores incluídos, como IDs de arquivos do Drive. Além disso, verifique se o usuário tem as permissões adequadas para visualizar o anexo.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indica que o proprietário da pasta do curso no Drive não pode ser removido.

Ação possível: descreva a causa da falha e sugira que o usuário transfira a propriedade da pasta do curso no Drive para outro usuário e tente novamente.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indica que o proprietário do curso não pode ser removido.

Ação possível: descreva a causa da falha e sugira que o proprietário do curso não pode ser removido. Na maioria dos casos, o usuário está tentando se remover, o que não é permitido.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indica que o proprietário do curso não pode ser removido porque a transferência de propriedade dessa turma ainda está em andamento.

Ação possível: descreva a causa da falha e sugira que o usuário aguarde alguns instantes para que a ação assíncrona de transferência de propriedade da turma seja concluída e tente novamente.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indica que um professor não pode ser removido de um curso sem proprietário.

Ação possível: descreva a causa da falha e sugira que o professor não pode ser removido. Na maioria dos casos, a conta de usuário do proprietário do curso foi excluída, causando um estado inválido do curso.

CourseMemberLimitReached

CourseMemberLimitReached indica que a ação tentada excederia o número máximo permitido de participantes do curso. Esse código geralmente é retornado pelo students.create() Para mais informações, consulte a seção "Limites de tamanho da turma" do artigo da Central de Ajuda Convidar estudantes para sua turma.

Ação possível: descreva a causa da falha e sugira que o usuário remova os participantes desnecessários do curso.

CourseNotModifiable

CourseNotModifiable indica que o curso relevante está em um estado que não permite a modificação das propriedades (além do próprio estado do curso).

Ação possível: peça ao usuário para mudar o curso para um estado de curso modificável. Para mudar o estado, use courses.patch(). O estado do curso pode ser alterado em uma solicitação que muda outras propriedades.

CourseTeacherLimitReached

CourseTeacherLimitReached indica que a ação solicitada excederia o número máximo permitido de professores do curso. Esse código geralmente é retornado por o teachers.create() método. Para mais informações, consulte a seção "Limitações de tamanho da turma" do artigo da Central de Ajuda Adicionar um professor auxiliar a uma turma.

Ação possível: descreva a causa da falha e sugira que o usuário remova os professores desnecessários do curso. Se aplicável ao seu app, você pode usar o teachers.delete() método para gerenciar as listas de professores em nome do usuário.

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl indica que a ação solicitada não é permitida porque ela introduziria um URL no título do curso. Os padrões de URL não são aceitos em títulos de cursos.

Ação possível: descreva a causa da falha e sugira que o usuário remova o padrão do URL do campo title. Os URLs são permitidos no campo description.

CourseTopicLimitReached

CourseTopicLimitReached indica que a ação solicitada excederia o número máximo permitido de tópicos em um curso. Esse código geralmente é retornado por o courses.topics.create() método.

Ação possível: descreva a causa da falha e sugira que o usuário remova os tópicos desnecessários. Se aplicável ao seu app, você pode usar o courses.topics.delete() método para gerenciar tópicos em nome do usuário.

EmptyAssignees

EmptyAssignees indica que a ação solicitada removeria todos os usuários atribuídos do curso correspondente. Não há suporte para atividades sem usuários atribuídos.

Ação possível: descreva a causa da falha e sugira que o proprietário do curso não pode remover todos os destinatários.

InactiveCourseOwner

InactiveCourseOwner indica que a ação solicitada não é permitida porque a conta do proprietário do curso foi excluída. O administrador do proprietário do curso precisa restaurar a conta do proprietário do curso antes de realizar a ação solicitada.

Ação possível: descreva a causa da falha e sugira que o administrador restaure a conta do proprietário do curso antes de tentar a operação novamente.

IneligibleOwner

IneligibleOwner indica que o usuário não pode ser adicionado como proprietário do curso porque não é um professor auxiliar.

Ação possível: descreva a causa da falha. Se o usuário solicitante não for um administrador, sugira que ele envie um convite para o usuário ser professor no curso antes de atualizar o proprietário. Se o usuário solicitante for um administrador, sugira que ele primeiro adicione o usuário como professor auxiliar do curso.

ListCoursesStudentAndTeacherFilter

ListCoursesStudentAndTeacherFilter ocorre ao fazer uma courses.list() solicitação com ambos os campos teacherId e studentId preenchidos. Apenas um desses campos pode ser definido em uma única solicitação.

Ainda é possível receber uma lista de cursos com estudantes e professores específicos fazendo duas solicitações separadas. Primeiro, recupere os cursos do professor fazendo uma solicitação courses.list() com o campo teacherId preenchido e, em seguida, faça outra solicitação courses.list() com o campo studentId preenchido. Calcule a interseção dos resultados para receber a lista de cursos que correspondem aos dois usuários.

PendingInvitationExists

PendingInvitationExists indica que alguém já foi convidado para assumir a propriedade do curso. Esse erro ocorre durante a transferência de propriedade do curso quando uma transferência foi iniciada anteriormente, mas ainda não foi aceita pelo novo proprietário.

UserCannotOwnCourse

UserCannotOwnCourse indica que o usuário não pode ser adicionado como proprietário do curso.

Ação possível: descreva a causa da falha e sugira que o curso não pode ser criado com o usuário como proprietário. Um usuário não administrador que faz a solicitação pode receber esse erro se tentar criar um curso com um usuário diferente dele como proprietário. Um usuário administrador que faz a solicitação pode receber esse erro se a conta de usuário especificada como proprietário não existir ou se o usuário não estiver no domínio.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indica que o usuário já é membro do número máximo permitido de grupos e não pode participar de nenhum curso. Esse código é geralmente retornado por students.create() ou teachers.create(). Para mais informações, consulte a seção "Convites e tamanho do grupo" do artigo da Central de Ajuda Entender as políticas e os limites do Grupos.

Ação possível: descreva a causa da falha e sugira que o usuário saia de todos os cursos em que não está participando. O usuário pode criar outra conta se precisar participar de mais cursos. Se aplicável ao seu app, você pode usar students.create() ou teachers.delete() para gerenciar listas em nome do usuário.

HTTP 403: PERMISSION_DENIED

Todos os métodos da API Classroom podem retornar um erro PERMISSION_DENIED (HTTP 403) se um usuário final não atender aos pré-requisitos de acesso. A mensagem que acompanha o erro contém uma mensagem de erro para ajudar a identificar a causa e orientar os usuários a realizar a ação apropriada.

As seções a seguir descrevem mensagens de erro comuns da API Classroom.

CannotDirectAddUser

CannotDirectAddUser indica que um usuário não pode ser adicionado diretamente ao curso. Esse código ocorre quando um administrador de domínio tenta adicionar um usuário a um curso e esse usuário não tem um endereço de e-mail ou não pertence ao domínio.

Ação possível: descreva a causa da falha e sugira que o administrador do domínio verifique se a conta de usuário existe e está no domínio do administrador do curso.

CannotInviteUserInUntrustedDomain

CannotInviteUserInUntrustedDomain indica que o usuário convidado ou criado não está no mesmo domínio ou em um domínio confiável do autor da chamada. Para autores de chamadas com uma licença do Google Workspace for Education Fundamentals, os usuários de fora do domínio não confiáveis não podem ser adicionados ou convidados diretamente para um curso.

Ação possível: descreva a causa da falha e sugira que o autor da chamada considere uma das seguintes opções:

  • Inclua os domínios dos usuários que fazem e recebem a chamada na lista de domínios confiáveis uns dos outros e tente novamente.
  • Sugira que o autor da chamada compartilhe manualmente um link de convite do curso ou um código da turma. Isso exige que um administrador configure convites de fora do domínio. Consulte Convidar estudantes para sua turma para saber mais.
  • Sugira que o autor da chamada faça upgrade para uma licença paga do Google Workspace for Education, já que a limitação se aplica apenas à licença do Fundamentals.

ClassroomApiDisabled

ClassroomApiDisabled indica que o usuário solicitante não tem acesso à API Classroom.

Ação possível: direcione o usuário para instruções sobre como ativar o acesso aos dados do Google Sala de Aula. Consulte também ClassroomDisabled, já que o usuário pode estar usando a conta errada.

ClassroomDisabled

ClassroomDisabled indica que o usuário solicitante não tem acesso ao Google Sala de Aula.

Ação possível: direcione o usuário para instruções sobre como ativar o acesso ao Google Sala de Aula. O usuário também pode estar usando a conta errada. Por isso, também é possível fornecer um link para usar várias contas para que o usuário possa selecionar a conta correta.

ExpiredAddOnToken

ExpiredAddOnToken indica que o token de complemento usado para fazer chamadas para a API expirou.

Ação possível: peça ao usuário para atualizar a página ou fazer login no complemento novamente para que você possa receber o novo parâmetro de consulta addOnToken do URL da solicitação.

InvalidAddOnToken

InvalidAddOnToken indica que o token de complemento transmitido em uma solicitação não está autorizado a criar um anexo de complemento na atividade.

Ação possível: esse erro pode ser gerado se o usuário fizer login no complemento com uma conta diferente da conta no Google Sala de Aula. Instrua o usuário a sair de todas as outras contas no navegador ou abrir o Google Sala de Aula em uma janela anônima do Chrome.

ProjectPermissionDenied

ProjectPermissionDenied indica que a solicitação tentou modificar um recurso associado a um projeto diferente do Play Console.

Ação possível: indique que seu aplicativo não pode fazer a solicitação pretendida Ela só pode ser feita pelo projeto do Play Console do OAuth ID do cliente que criou o recurso.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indica que a solicitação tentou modificar as configurações do período de avaliação em um curso em que o usuário solicitante ou o proprietário do curso não tem a licença adequada do Google Workspace for Education ou o usuário solicitante não é um professor do curso ou administrador do domínio.

Ação possível: indique que seu aplicativo não pode fazer a solicitação pretendida para atualizar as configurações do período de avaliação devido ao status da licença ou da função do curso. As licenças podem ser atribuídas no Google Admin Console.

HTTP 429: RESOURCE_EXHAUSTED

O RESOURCE_EXHAUSTED é retornado quando a ação solicitada não é permitida porque algum recurso, como cota ou capacidade do servidor, está esgotado. Esses tipos de erros de solicitação geralmente ocorrem porque o app gerou uma carga excessiva.

Para evitar o acionamento desses limites e aumentar a confiabilidade do aplicativo, use mecanismos de repetição. Os mecanismos de repetição válidos incluem:

  • Use a espera exponencial truncada para tentar a solicitação novamente e maximizar a capacidade de processamento de solicitações em ambientes simultâneos.

  • Para evitar colisões, considere a espera exponencial truncada com instabilidade. A introdução de instabilidade pode ajudar as solicitações a serem bem-sucedidas mais rapidamente, introduzindo um atraso aleatório que distribui picos nas solicitações.

Se o aplicativo retornar erros RESOURCE_EXHAUSTED devido a limitações de cota, envie um aumento de cota. Para mais informações, consulte o artigo da Central de Ajuda Monitorar cotas de API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indica que o usuário já participou do número máximo permitido de cursos em um dia. Para mais informações, consulte a seção "Convites e tamanho do grupo" do artigo da Central de Ajuda Entender as políticas e os limites do Grupos.

Ação possível: descreva a causa da falha e sugira que o usuário espere um dia antes de participar do curso.

HTTP 500: INTERNAL

INTERNAL indica que ocorreu um erro inesperado ao processar a solicitação. Os erros de solicitação INTERNAL também podem ser resolvidos usando a espera exponencial para tentar a solicitação novamente. Se um erro INTERNAL persistir, ele poderá ser informado registrando um bug no Issue Tracker público da API Classroom.