Messaggi di errore comuni dell'API Google Classroom

Questa pagina descrive alcuni messaggi di errore, problemi e possibili azioni comuni per i seguenti tipi di errori dell'API Google Classroom:

HTTP 400: FAILED_PRECONDITION

Viene restituito un valore FAILED_PRECONDITION quando l'utente tenta di eseguire un'azione che non può essere consentita, ad esempio perché ha raggiunto un limite o uno stato dell'applicazione, come CourseNotModifiable. Per correggere un FAILED_PRECONDITION, invita l'utente a eseguire un'azione e poi riprova. In alcuni casi, potresti anche utilizzare endpoint alternativi per correggere lo stato per conto dell'utente.

AttachmentNotVisible

AttachmentNotVisible indica che uno o più allegati specificati non sono visibili all'utente, non sono del tipo richiesto o non esistono. Ad esempio, gli elementi di Drive che non sono stati condivisi con l'utente restituiranno questo errore.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di ricontrollare gli identificativi, ad esempio gli ID file di Drive, che ha incluso. Inoltre, assicurati che l'utente abbia le autorizzazioni appropriate per visualizzare l'allegato.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indica che il proprietario della cartella Drive del corso potrebbe non essere rimosso.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di trasferire la proprietà della cartella di Drive del corso a un altro utente e di riprovare.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indica che il proprietario del corso potrebbe non essere rimosso.

Possibile azione: descrivi la causa dell'errore e suggerisci di non rimuovere il proprietario del corso. Nella maggior parte dei casi, l'utente sta tentando di rimuoversi, cosa non consentita.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indica che il proprietario del corso potrebbe non essere rimosso perché il trasferimento della proprietà di questo corso è ancora in progress.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di attendere qualche istante perché l'azione asincrona di trasferimento della proprietà del corso venga completata, quindi riprova.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indica che un insegnante non può essere rimosso da un corso senza proprietario.

Possibile azione: descrivi la causa del fallimento e suggerisci che l'insegnante potrebbe non essere rimosso. Nella maggior parte dei casi, l'account utente del proprietario del corso è stato eliminato, causando un stato del corso non valido.

CourseMemberLimitReached

CourseMemberLimitReached indica che l'azione tentata supererebbe il numero massimo consentito di partecipanti al corso. Questo codice viene solitamente restituito dall'students.create(). Per ulteriori informazioni, consulta la sezione "Limiti di dimensioni dei corsi" dell'articolo del Centro assistenza Invitare gli studenti a un corso.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di rimuovere gli elementi del corso non necessari

CourseNotModifiable

CourseNotModifiable indica che il corso pertinente è in uno stato che non consente la modifica delle sue proprietà (diverso dallo stato del corso in sé).

Possibile azione: invita l'utente a modificare il corso in uno stato modificabile. Per modificare lo stato, utilizza courses.patch(). Lo stato del corso può essere modificato in una richiesta che modifica altre proprietà.

CourseTeacherLimitReached

CourseTeacherLimitReached indica che l'azione richiesta supererebbe il numero massimo consentito di insegnanti del corso. Questo codice viene in genere restituito dal metodo teachers.create(). Per ulteriori informazioni, consulta la sezione "Limiti di dimensione dei corsi" dell'articolo del Centro assistenza Aggiungere un co-insegnante a un corso.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di rimuovere gli insegnanti del corso non necessari. Se applicabile alla tua app, puoi utilizzare il metodo teachers.delete() per gestire gli elenchi degli insegnanti per conto dell'utente.

CourseTopicLimitReached

CourseTopicLimitReached indica che l'azione richiesta supererebbe il numero massimo di argomenti consentiti in un corso. Questo codice viene solitamente restituito dal metodo courses.topics.create().

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di rimuovere gli argomenti non necessari. Se applicabile alla tua app, puoi utilizzare il metodo courses.topics.delete() per gestire gli argomenti per conto dell'utente.

InactiveCourseOwner

InactiveCourseOwner indica che l'azione richiesta non è consentita perché l'account del proprietario del corso è stato eliminato. L'amministratore del proprietario del corso deve ripristinare l'account del proprietario del corso prima di intraprendere l'azione richiesta.

Possibile azione: descrivi la causa dell'errore e suggerisci all'amministratore di ripristinare l'account del proprietario del corso prima di riprovare l'operazione.

IneligibleOwner

IneligibleOwner indica che l'utente non può essere aggiunto come proprietario del corso perché non è un co-insegnante.

Possibile azione: descrivi la causa dell'errore. Se l'utente che effettua la richiesta non è un amministratore, consiglia di inviare prima all'utente un invito a diventare insegnante del corso prima di aggiornare il proprietario. Se l'utente che effettua la richiesta è un amministratore, suggerisci di aggiungere prima l'utente come co-insegnante del corso.

PendingInvitationExists

PendingInvitationExists indica che qualcuno è già stato invitato a assumere la proprietà del corso. Questo errore si verifica durante il trasferimento della proprietà del corso quando un trasferimento è stato avviato in precedenza, ma non è stato ancora accettato dal nuovo proprietario.

UserCannotOwnCourse

UserCannotOwnCourse indica che l'utente non può essere aggiunto come proprietario del corso.

Possibile azione: descrivi la causa dell'errore e suggerisci che il corso non può essere creato con l'utente come proprietario. Un utente richiedente non amministratore potrebbe visualizzare questo errore se tenta di creare un corso con un utente diverso da sé come proprietario. Un amministratore che richiede un utente potrebbe visualizzare questo errore se l'account utente specificato come proprietario non esiste o se l'utente non fa parte del suo dominio.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indica che l'utente fa già parte del numero massimo di gruppi consentiti e non può partecipare a nessun corso. Questo codice viene solitamente restituito da students.create() o teachers.create(). Per ulteriori informazioni, consulta la sezione "Limiti di dimensione dei corsi" dell'articolo del Centro assistenza su come invitare gli studenti a un corso.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di abbandonare i corsi a cui non partecipa. L'utente può prendere in considerazione la creazione di un account aggiuntivo se deve partecipare ad altri corsi. Se applicabile alla tua app, puoi utilizzare students.create() o teachers.delete() per gestire i ruoli per conto dell'utente.

HTTP 403: PERMISSION_DENIED

Tutti i metodi dell'API Classroom possono restituire un errore PERMISSION_DENIED (HTTP 403) se un utente finale non soddisfa i prerequisiti per l'accesso. Il messaggio accompagnatore dell'errore contiene un messaggio di errore per aiutarti a identificare la causa e indirizzare gli utenti a intraprendere l'azione appropriata.

Le sezioni seguenti descrivono i messaggi di errore più comuni dell'API Classroom.

CannotDirectAddUser

CannotDirectAddUser indica che un utente non può essere aggiunto direttamente al corso. Questo codice si verifica quando un amministratore di dominio tenta di aggiungere un utente a un corso e l'utente non ha un indirizzo email o non appartiene al dominio.

Possibile azione: descrivi la causa dell'errore e suggerisci all'amministratore del dominio di verificare che l'account utente esista e che si trovi nel dominio dell'amministratore del corso.

ClassroomApiDisabled

ClassroomApiDisabled indica che l'utente che effettua la richiesta non ha accesso all'API Classroom.

Possibile azione: indirizza l'utente alle istruzioni su come attivare l'accesso ai dati di Classroom. Consulta anche ClassroomDisabled, poiché l'utente potrebbe utilizzare l'account sbagliato.

ClassroomDisabled

ClassroomDisabled indica che l'utente che effettua la richiesta non ha accesso a Classroom.

Possibile azione: indirizza l'utente alle istruzioni su come attivare l'accesso a Classroom. L'utente potrebbe anche utilizzare l'account sbagliato, quindi potresti anche fornire un link per l'utilizzo di più account in modo che possa selezionare l'account corretto.

ExpiredAddOnToken

ExpiredAddOnToken indica che il token del componente aggiuntivo utilizzato per effettuare chiamate all'API è scaduto.

Possibile azione: chiedi all'utente di aggiornare la pagina o di accedere di nuovo al componente aggiuntivo in modo da poter ottenere il nuovo parametro di query addOnToken dall'URL della richiesta.

InvalidAddOnToken

InvalidAddOnToken indica che il token del componente aggiuntivo passato in una richiesta non è autorizzato a creare un allegato del componente aggiuntivo nel compito.

Possibile azione: questo errore può verificarsi se l'utente accede al componente aggiuntivo con un account diverso da quello in Classroom. Invita l'utente a uscire da tutti gli altri account nel browser o ad aprire Classroom in una finestra di Chrome in incognito.

ProjectPermissionDenied

ProjectPermissionDenied indica che la richiesta ha tentato di modificare una risorsa associata a un altro progetto Console per gli sviluppatori.

Azione possibile: indica che la tua applicazione non può effettuare la richiesta prevista. Può essere eseguito solo dal progetto Developer Console dell'ID client OAuth che ha creato la risorsa.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indica che la richiesta ha provato a modificare le impostazioni del periodo di valutazione in un corso in cui l'utente che ha effettuato la richiesta o il proprietario del corso non dispone della licenza Google Workspace for Education appropriata.

Possibile azione: indica che la tua applicazione non può effettuare la richiesta prevista per aggiornare le impostazioni del periodo di valutazione a causa dello stato della licenza dell'utente che effettua la richiesta o del proprietario del corso. Le licenze possono essere assegnate nella Console di amministrazione Google.

HTTP 429: RESOURCE_EXHAUSTED

Il codice RESOURCE_EXHAUSTED viene restituito quando l'azione richiesta non è consentita perché alcune risorse, ad esempio la quota o la capacità del server, sono esaurite. Questi tipi di errori di richiesta si verificano in genere perché l'app ha generato un carico eccessivo.

Per evitare di attivare questi limiti e aumentare l'affidabilità della tua applicazione, utilizza i meccanismi di ripetizione. I meccanismi di ripetizione validi includono:

  • Utilizza il backoff esponenziale troncato per riprovare a inviare la richiesta e massimizzare il throughput delle richieste in ambienti con più richieste in contemporanea.

  • Per evitare collisioni, valuta la possibilità di utilizzare il backoff esponenziale troncato con jitter. L'introduzione del jitter può contribuire a far sì che le richieste vengano completate più rapidamente introducendo un ritardo randomizzato che distribuisce gli picchi delle richieste.

Se la tua applicazione restituisce errori RESOURCE_EXHAUSTED a causa di limitazioni della quota, richiedi un aumento della quota. Per ulteriori informazioni, consulta l'articolo del Centro assistenza Monitorare le quote API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indica che l'utente ha già seguito il numero massimo di corsi consentiti in un giorno. Per ulteriori informazioni, consulta la sezione "Inviti e dimensioni dei gruppi" dell'articolo del Centro assistenza Informazioni su criteri e limiti di Gruppi.

Possibile azione: descrivi la causa dell'errore e suggerisci all'utente di attendere un giorno prima di partecipare al corso.

HTTP 500: INTERNAL

INTERNAL indica che si è verificato un errore imprevisto durante l'elaborazione della richiesta. Spesso gli errori di richiesta INTERNAL possono essere risolti anche utilizzando il backoff esponenziale per riprovare a inviare la richiesta. Se un errore INTERNAL persiste, può essere segnalato inviando un bug nell'Issue Tracker pubblico dell'API Classroom.