Google Classroom API 常見錯誤訊息

本頁面說明一些常見的 Google Classroom API 錯誤訊息、問題,以及下列錯誤類型可採取的行動:

HTTP 400:FAILED_PRECONDITION

當使用者嘗試執行不允許的動作時,系統會傳回 FAILED_PRECONDITION,原因可能是使用者已達到上限或應用程式狀態 (例如 CourseNotModifiable)。如要修正 FAILED_PRECONDITION,請指示使用者採取某些動作,然後重試。或者,在某些情況下,您可能會使用替代端點代表使用者修正狀態。

AttachmentNotVisible

AttachmentNotVisible 表示指定的一或多個附件使用者無法查看、不屬於要求的類型,或不存在。舉例來說,如果雲端硬碟項目未與使用者共用,就會傳回這項錯誤。

可能採取的行動: 說明失敗原因,並建議使用者重新檢查所含的 ID,例如雲端硬碟檔案 ID。此外,請確認使用者具備查看附件的適當權限。

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner 表示無法移除課程 Google 雲端硬碟資料夾的擁有者。

可能採取的動作: 說明失敗原因,並建議使用者將課程雲端硬碟資料夾的擁有權轉移給其他使用者,然後再試一次。

CannotRemoveCourseOwner

CannotRemoveCourseOwner 表示無法移除課程擁有者。

可能動作: 說明失敗原因,並建議課程擁有者可能無法移除。在大多數情況下,使用者嘗試移除自己,但這是系統不允許的操作。

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete 表示課程擁有者可能無法移除,因為這門課程的擁有權轉移作業仍在進行中。

可能的操作: 說明失敗原因,並建議使用者稍待片刻,等待轉移課程擁有權的非同步動作完成, 然後再試一次。

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner 表示老師可能無法從沒有擁有者的課程中移除。

可能動作: 說明失敗原因,並建議老師可能無法移除。在大多數情況下,這是因為課程擁有者的使用者帳戶已遭刪除,導致課程狀態無效。

CourseMemberLimitReached

CourseMemberLimitReached 表示嘗試執行的動作會超出課程成員人數上限。這個代碼通常是由 students.create() 傳回。如需更多資訊,請參閱「邀請學生加入課程」說明中心文章的「課程人數限制」一節。

可能採取的動作: 說明失敗原因,並建議使用者移除不必要的課程成員

CourseNotModifiable

CourseNotModifiable 表示相關課程的狀態不允許修改屬性 (課程狀態本身除外)。

可能動作: 提示使用者將課程變更為可修改的課程狀態。如要變更狀態,請使用 courses.patch()。您可以在變更其他屬性的要求中,變更課程狀態。

CourseTeacherLimitReached

CourseTeacherLimitReached 表示要求執行的動作會超過課程老師人數上限。這段程式碼通常由 teachers.create() 方法傳回。詳情請參閱「為課程新增共同授課老師」說明中心文章的「課程人數限制」一節。

可能採取的動作: 說明失敗原因,並建議使用者移除不必要的課程老師。如果您的應用程式適用,可以使用 teachers.delete() 方法代表使用者管理教師名單。

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl 表示系統不允許所要求的操作,因為這會將網址加入課程名稱。課程名稱不支援網址模式。

可能採取的行動: 說明失敗原因,並建議使用者從 title 欄位中移除網址模式。允許description 欄位中加入網址。

CourseTopicLimitReached

CourseTopicLimitReached 表示要求執行的動作會超出課程主題數量上限。這個代碼通常是由 courses.topics.create() 方法傳回。

可能採取的動作: 說明失敗原因,並建議使用者移除不必要的主題。如果您的應用程式適用,可以使用 courses.topics.delete() 方法代表使用者管理主題。

InactiveCourseOwner

InactiveCourseOwner 表示課程擁有者的帳戶已刪除,因此不允許執行要求的動作。課程擁有者的管理員必須先還原課程擁有者的帳戶,才能執行要求動作。

可能採取的動作: 說明失敗原因,並建議管理員還原課程擁有者的帳戶, 再重試作業。

IneligibleOwner

IneligibleOwner 表示使用者不是共同老師,因此無法新增為課程擁有者。

可採取的行動: 說明失敗原因。如果要求者不是管理員,請建議他們先傳送邀請給使用者,請對方擔任課程老師,再更新擁有者。如果要求者是管理員,請建議他們先將使用者新增為課程的共同老師。

PendingInvitationExists

PendingInvitationExists 表示已邀請他人成為課程擁有者。如果先前已啟動課程擁有權轉移程序,但新擁有者尚未接受,就會在轉移期間發生這個錯誤。

UserCannotOwnCourse

UserCannotOwnCourse 表示使用者無法新增為課程擁有者。

可能動作:說明失敗原因,並建議不要以該使用者做為課程擁有者建立課程。如果非管理員的使用者嘗試建立課程,並將擁有者設為自己以外的使用者,就可能會看到這項錯誤。如果指定為擁有者的使用者帳戶不存在,或使用者不在系統管理員要求的網域中,系統管理員可能會看到這項錯誤。

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached 表示使用者已加入的群組數量達到上限,無法再加入任何課程。這個代碼通常由 students.create()teachers.create() 傳回。詳情請參閱「邀請學生加入課程」說明中心文章的「課程人數限制」一節。

可能採取的行動: 說明失敗原因,並建議使用者退出未參與的課程。如果使用者需要參加更多課程,可以考慮建立額外帳戶。如果您的應用程式適用,您可以透過 students.create()teachers.delete() 代表使用者管理名單。

HTTP 403:PERMISSION_DENIED

如果使用者不符合存取權的先決條件,所有 Classroom API 方法都可能會傳回 PERMISSION_DENIED (HTTP 403) 錯誤。錯誤訊息隨附的訊息包含錯誤訊息,可協助您找出原因,並引導使用者採取適當行動。

下列各節說明常見的 Classroom API 錯誤訊息。

CannotDirectAddUser

CannotDirectAddUser 表示使用者無法直接加入課程。如果網域管理員嘗試將使用者新增至課程,但該使用者沒有電子郵件地址或不屬於該網域,就會發生這個錯誤。

可能採取的行動: 說明失敗原因,並建議網域管理員確認使用者帳戶存在於課程管理員的網域中。

ClassroomApiDisabled

ClassroomApiDisabled 表示提出要求的使用者無法存取 Classroom API。

可能採取的行動: 引導使用者參閱啟用 Classroom 資料存取權的操作說明。 另請參閱 ClassroomDisabled,因為使用者可能使用了錯誤的帳戶。

ClassroomDisabled

ClassroomDisabled 表示提出要求的使用者無法存取 Classroom。

可能採取的行動: 引導使用者參閱啟用 Classroom 存取權的操作說明。 使用者也可能使用錯誤的帳戶,因此您也可以提供使用多個帳戶的連結,讓使用者選取正確的帳戶。

ExpiredAddOnToken

ExpiredAddOnToken 表示用來呼叫 API 的外掛程式權杖已過期。

可能採取的動作:提示使用者重新整理頁面或再次登入外掛程式,以便從要求網址取得新的 addOnToken 查詢參數

InvalidAddOnToken

InvalidAddOnToken 表示要求中傳遞的外掛程式權杖未獲授權,無法在作業中建立外掛程式附件。

可能的操作:如果使用者登入外掛程式時使用的帳戶,與 Classroom 中的帳戶不同,系統可能會擲回這項錯誤。請使用者登出瀏覽器中的所有其他帳戶,或在 Chrome 無痕視窗中開啟 Classroom。

ProjectPermissionDenied

ProjectPermissionDenied 表示要求嘗試修改與其他 Play 管理中心專案相關聯的資源。

可能採取的動作: 指出應用程式無法提出預期要求。只有建立資源的 OAuth 用戶端 ID,才能透過 Developer Console 專案進行這項操作。

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings 表示要求嘗試修改課程中的評分週期設定,但要求使用者或課程擁有者沒有適當的 Google Workspace for Education 授權,或要求使用者不是課程老師或網域管理員。

可能採取的行動: 指出應用程式因授權或課程角色狀態,無法提出更新評分週期設定的預期要求。您可以在 Google 管理控制台中指派授權。

HTTP 429:RESOURCE_EXHAUSTED

當配額或伺服器容量等資源耗盡,導致系統不允許所要求動作時,就會傳回 RESOURCE_EXHAUSTED。這類要求錯誤通常是因為應用程式產生過多負載。

如要避免觸發這些限制並提高應用程式的可靠性,請使用重試機制。有效的重試機制包括:

  • 使用部分指數輪詢重試要求,並在並行環境中盡量提高要求總處理量。

  • 為避免發生碰撞,建議您考慮使用抖動的截斷指數輪詢。 導入抖動可隨機延遲要求,分散要求尖峰,有助於加快要求成功速度。

如果應用程式因配額限制而傳回 RESOURCE_EXHAUSTED 錯誤,請申請提高配額。詳情請參閱這篇說明中心文章

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached 表示使用者在一天內加入的課程數量已達上限。詳情請參閱「瞭解網路論壇政策與使用限制」說明中心文章中的「群組邀請和大小」一節。

可能採取的行動: 說明失敗原因,並建議使用者等待一天後再加入課程。

HTTP 500:INTERNAL

INTERNAL 表示處理要求時發生未預期的錯誤。使用指數輪詢重試要求,通常也能解決 INTERNAL 要求錯誤。如果 INTERNAL 錯誤仍未解決,請在 Classroom API 公開問題追蹤工具中回報錯誤。