本頁面說明一些常見的 Google Classroom API 錯誤訊息、問題,以及下列類型錯誤的可能動作:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
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 公開問題追蹤工具回報錯誤。