Halaman ini menjelaskan beberapa pesan error, masalah, dan kemungkinan tindakan Google Classroom API yang umum untuk jenis error berikut:
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
FAILED_PRECONDITION
ditampilkan saat pengguna mencoba melakukan tindakan yang
tidak dapat diizinkan, baik karena pengguna telah mencapai batas atau status
aplikasi, seperti CourseNotModifiable
. Untuk memperbaiki FAILED_PRECONDITION
,
minta pengguna untuk melakukan tindakan tertentu, lalu coba lagi. Atau, dalam beberapa kasus, Anda
dapat menggunakan endpoint alternatif untuk memperbaiki status atas nama pengguna.
AttachmentNotVisible
AttachmentNotVisible
menunjukkan bahwa satu atau beberapa lampiran yang ditentukan
tidak terlihat oleh pengguna, bukan jenis yang diminta, atau tidak ada. Misalnya, item Drive yang belum dibagikan kepada pengguna akan menampilkan error ini.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna memeriksa ulang ID, seperti ID file Drive, yang telah mereka sertakan. Selain itu, pastikan pengguna memiliki izin yang sesuai untuk melihat lampiran.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
menunjukkan bahwa pemilik folder Drive kursus tidak dapat dihapus.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna mentransfer kepemilikan folder Drive kursus ke pengguna lain, lalu coba lagi.
CannotRemoveCourseOwner
CannotRemoveCourseOwner
menunjukkan bahwa pemilik kursus tidak dapat dihapus.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pemilik kursus tidak dihapus. Dalam sebagian besar kasus, pengguna mencoba menghapus diri mereka sendiri yang tidak diizinkan.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
menunjukkan bahwa pemilik kursus mungkin tidak dapat dihapus karena transfer kepemilikan kelas ini masih dalam proses.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menunggu beberapa saat hingga tindakan asinkron untuk mentransfer kepemilikan kelas selesai, lalu coba lagi.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
menunjukkan bahwa pengajar mungkin tidak dapat dihapus dari kursus tanpa pemilik.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengajar tidak dihapus. Biasanya, akun pengguna pemilik kursus telah dihapus, sehingga menyebabkan status kursus tidak valid.
CourseMemberLimitReached
CourseMemberLimitReached
menunjukkan bahwa tindakan yang dicoba akan melampaui
jumlah maksimum anggota kursus yang diizinkan. Kode ini biasanya ditampilkan oleh
students.create()
Untuk informasi selengkapnya, lihat bagian "Batas ukuran kelas" di artikel pusat bantuan
Mengundang siswa ke kelas.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk menghapus anggota kursus yang tidak diperlukan
CourseNotModifiable
CourseNotModifiable
menunjukkan bahwa kursus yang relevan berada dalam status yang tidak memungkinkan propertinya diubah (selain status kursus itu sendiri).
Kemungkinan Tindakan:
Minta pengguna untuk mengubah status kursus menjadi
status kursus yang dapat diubah. Untuk
mengubah status, gunakan
courses.patch()
.
Status kursus dapat diubah dalam permintaan yang mengubah properti lainnya.
CourseTeacherLimitReached
CourseTeacherLimitReached
menunjukkan bahwa tindakan yang diminta akan melebihi
jumlah maksimum pengajar kursus yang diizinkan. Kode ini biasanya ditampilkan
oleh metode teachers.create()
.
Untuk mengetahui informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" di artikel pusat bantuan Menambahkan rekan pengajar ke kelas.
Kemungkinan Tindakan:
Jelaskan penyebab kegagalan dan sarankan agar pengguna menghapus pengajar kursus yang tidak diperlukan. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan metode
teachers.delete()
untuk mengelola daftar nama pengajar atas nama pengguna.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl
menunjukkan bahwa tindakan yang diminta tidak diizinkan karena akan memasukkan URL ke dalam judul kursus. Pola URL tidak didukung dalam judul kursus.
Kemungkinan Tindakan:
Jelaskan penyebab kegagalan dan sarankan agar pengguna menghapus pola URL dari kolom title
. URL diizinkan di kolom description
.
CourseTopicLimitReached
CourseTopicLimitReached
menunjukkan bahwa tindakan yang diminta akan melebihi jumlah maksimum topik yang diizinkan dalam kursus. Kode ini biasanya ditampilkan oleh metode courses.topics.create()
.
Kemungkinan Tindakan:
Jelaskan penyebab kegagalan dan sarankan pengguna menghapus topik yang tidak perlu. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan metode
courses.topics.delete()
untuk mengelola topik atas nama pengguna.
EmptyAssignees
EmptyAssignees
menunjukkan bahwa tindakan yang diminta akan menghapus semua penerima tugas
dari tugas yang sesuai. Tugas kelas tanpa penerima tugas tidak didukung.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pemilik kursus tidak dapat menghapus semua penerima tugas.
InactiveCourseOwner
InactiveCourseOwner
menunjukkan bahwa tindakan yang diminta tidak diizinkan
karena akun pemilik kursus dihapus. Administrator pemilik kursus harus memulihkan akun pemilik kursus sebelum melakukan tindakan yang diminta.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar administrator memulihkan akun pemilik kursus sebelum mencoba lagi operasi.
IneligibleOwner
IneligibleOwner
menunjukkan bahwa pengguna tidak dapat ditambahkan sebagai pemilik kursus karena pengguna bukan rekan pengajar.
Tindakan yang Dapat Dilakukan: Jelaskan penyebab kegagalan. Jika pengguna yang meminta bukan administrator, sarankan agar pengguna tersebut mengirimkan undangan terlebih dahulu kepada pengguna yang akan dijadikan pemilik baru untuk menjadi pengajar di kursus sebelum memperbarui pemilik. Jika pengguna yang meminta adalah administrator, sarankan agar dia menambahkan pengguna tersebut sebagai rekan pengajar kursus terlebih dahulu.
PendingInvitationExists
PendingInvitationExists
menunjukkan bahwa seseorang telah diundang untuk mengambil alih kepemilikan kursus. Error ini terjadi selama transfer kepemilikan kursus
jika transfer sebelumnya dimulai, tetapi belum diterima oleh
pemilik baru.
UserCannotOwnCourse
UserCannotOwnCourse
menunjukkan bahwa pengguna tidak dapat ditambahkan sebagai pemilik kursus.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar kursus tidak dapat dibuat dengan pengguna sebagai pemilik kursus. Pengguna yang meminta non-administrator dapat melihat error ini jika mereka mencoba membuat kursus dengan pengguna selain dirinya sendiri sebagai pemilik. Administrator yang meminta pengguna mungkin melihat error ini jika akun pengguna yang ditentukan sebagai pemilik tidak ada atau pengguna tidak berada di domain mereka.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
menunjukkan bahwa pengguna sudah menjadi anggota
dari jumlah maksimum grup yang diizinkan dan tidak dapat bergabung ke kursus apa pun. Kode ini biasanya ditampilkan oleh
students.create()
atau
teachers.create()
.
Untuk mengetahui informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" di artikel pusat bantuan Mengundang siswa ke kelas.
Kemungkinan Tindakan:
Jelaskan penyebab kegagalan dan sarankan agar pengguna keluar dari kursus yang tidak diikuti. Pengguna dapat mempertimbangkan untuk membuat akun tambahan jika perlu berpartisipasi dalam lebih banyak kursus. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan students.create()
atau teachers.delete()
untuk mengelola daftar nama atas nama pengguna.
HTTP 403: PERMISSION_DENIED
Semua metode Classroom API dapat menampilkan error PERMISSION_DENIED
(HTTP 403)
jika pengguna akhir tidak memenuhi prasyarat untuk akses. Pesan yang menyertai error berisi pesan error untuk membantu Anda mengidentifikasi penyebabnya dan mengarahkan pengguna untuk mengambil tindakan yang sesuai.
Bagian berikut menjelaskan pesan error umum Classroom API.
CannotDirectAddUser
CannotDirectAddUser
menunjukkan bahwa pengguna tidak dapat ditambahkan langsung ke kursus. Kode ini terjadi saat administrator domain mencoba menambahkan pengguna ke kursus dan pengguna tersebut tidak memiliki alamat email atau bukan anggota domain.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar administrator domain memeriksa apakah akun pengguna ada dan berada dalam domain administrator kursus.
ClassroomApiDisabled
ClassroomApiDisabled
menunjukkan bahwa pengguna yang meminta tidak memiliki akses
ke Classroom API.
Kemungkinan Tindakan: Mengarahkan pengguna ke petunjuk tentang mengaktifkan akses data Classroom. Lihat juga ClassroomDisabled, karena pengguna mungkin menggunakan akun yang salah.
ClassroomDisabled
ClassroomDisabled
menunjukkan bahwa pengguna yang meminta tidak memiliki akses ke
Classroom.
Kemungkinan Tindakan: Mengarahkan pengguna ke petunjuk tentang mengaktifkan akses Classroom. Pengguna mungkin juga menggunakan akun yang salah, jadi Anda juga dapat memberikan link ke artikel tentang menggunakan beberapa akun agar pengguna dapat memilih akun yang benar.
ExpiredAddOnToken
ExpiredAddOnToken
menunjukkan bahwa token add-on yang digunakan untuk melakukan panggilan ke
API telah habis masa berlakunya.
Kemungkinan Tindakan: Minta pengguna untuk memuat ulang halaman atau login ke add-on lagi agar Anda dapat memperoleh parameter kueri addOnToken
yang baru dari URL permintaan.
InvalidAddOnToken
InvalidAddOnToken
menunjukkan bahwa token add-on yang diteruskan dalam permintaan tidak
diizinkan untuk membuat lampiran add-on pada tugas.
Kemungkinan Tindakan: Error ini dapat terjadi jika pengguna login ke add-on dengan akun yang berbeda dari akun di Classroom. Minta pengguna untuk logout dari semua akun lain di browser atau membuka Classroom di jendela Chrome samaran.
ProjectPermissionDenied
ProjectPermissionDenied
menunjukkan bahwa permintaan mencoba mengubah
resource yang terkait dengan project Konsol Developer yang berbeda.
Kemungkinan Tindakan: Menunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang dimaksud. Permintaan hanya dapat dilakukan oleh project Konsol Developer dari client ID OAuth yang membuat resource.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
menunjukkan bahwa permintaan mencoba mengubah setelan periode penilaian di kursus tempat pengguna yang membuat permintaan atau pemilik kursus tidak memiliki lisensi Google Workspace for Education yang sesuai, atau pengguna yang membuat permintaan bukan pengajar kursus atau administrator domain.
Kemungkinan Tindakan: Menunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang dimaksudkan untuk memperbarui setelan periode penilaian karena status peran kursus atau pemberian lisensi. Lisensi dapat ditetapkan di konsol Google Admin.
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
ditampilkan saat tindakan yang diminta tidak diizinkan karena beberapa resource, seperti kuota atau kapasitas server, telah habis. Jenis error permintaan ini biasanya terjadi karena aplikasi Anda menghasilkan beban yang berlebihan.
Untuk menghindari pemicuan batas ini dan meningkatkan keandalan aplikasi Anda, gunakan mekanisme coba lagi. Mekanisme percobaan ulang yang valid meliputi:
Gunakan backoff eksponensial terpotong untuk mencoba ulang permintaan dan memaksimalkan throughput permintaan dalam lingkungan serentak.
Untuk menghindari tabrakan, pertimbangkan backoff eksponensial terpotong dengan jitter. Memperkenalkan jitter dapat membantu permintaan Anda berhasil lebih cepat dengan memperkenalkan penundaan acak yang menyebarkan lonjakan permintaan.
Jika aplikasi Anda menampilkan error RESOURCE_EXHAUSTED
karena batasan kuota, ajukan penambahan kuota. Untuk mengetahui informasi lebih lanjut, lihat artikel pusat bantuan
Kuota Monitor API.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
menunjukkan bahwa pengguna telah bergabung ke jumlah maksimum kursus yang diizinkan dalam satu hari. Untuk mengetahui informasi selengkapnya, lihat bagian "Undangan dan ukuran grup" di artikel pusat bantuan Memahami kebijakan dan batas Grup.
Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menunggu satu hari sebelum bergabung dengan kursus.
HTTP 500: INTERNAL
INTERNAL
menunjukkan bahwa terjadi error tak terduga saat memproses
permintaan. Error permintaan INTERNAL
juga sering kali dapat diselesaikan dengan menggunakan backoff eksponensial untuk mencoba kembali permintaan. Jika error INTERNAL
berlanjut, error tersebut dapat
dilaporkan dengan melaporkan bug di
issue tracker publik Classroom API.