Google Classroom API 常見錯誤訊息

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

HTTP 400:FAILED_PRECONDITION

如果使用者嘗試執行無法允許的動作,例如因為使用者已達到限制或應用程式狀態 (例如 CourseNotModifiable),系統就會傳回 FAILED_PRECONDITION。如要修正 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() 代表使用者管理老師名單。

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 表示要求嘗試修改與其他開發人員工作室專案相關聯的資源。

可能的動作:指出應用程式無法提出預期要求。這項操作只能由建立資源的 OAuth 用戶端 ID 的 Developer Console 專案執行。

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings 表示要求嘗試修改課程的評分期間設定,但要求使用者或課程擁有者沒有適當的 Google Workspace for Education 授權。

可能的動作:指出由於要求使用者或課程擁有者的授權狀態,您的應用程式無法提出更新評分期間設定的預期要求。您可以在 Google 管理控制台中指派授權。

HTTP 429:RESOURCE_EXHAUSTED

如果系統已耗盡某些資源 (例如配額或伺服器容量),導致要求的動作不允許執行,就會傳回 RESOURCE_EXHAUSTED。這類要求錯誤通常是因為應用程式產生過多負載。

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

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

  • 為避免衝突,請考慮使用帶有抖動的截斷指數輪詢。引入抖動可讓要求更快成功,因為這會引入隨機延遲,將要求的尖峰分散開來。

如果應用程式因配額限制而傳回 RESOURCE_EXHAUSTED 錯誤,請提交配額增加申請。詳情請參閱「監控 API 配額」說明中心文章。

UserCourseJoinRateLimitReached

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

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

HTTP 500:INTERNAL

INTERNAL 表示在處理要求時發生未預期的錯誤。您也可以使用指數輪詢重試要求,解決 INTERNAL 要求錯誤。如果 INTERNAL 錯誤持續發生,您可以前往 Classroom API 公開問題追蹤工具回報錯誤。