Pesan error Google Classroom API umum

Halaman ini menjelaskan beberapa pesan error, masalah, dan kemungkinan tindakan umum Google Classroom API untuk jenis error berikut:

HTTP 400: FAILED_PRECONDITION

FAILED_PRECONDITION ditampilkan saat pengguna mencoba tindakan yang tidak dapat diizinkan, baik karena pengguna telah mencapai batas atau status aplikasi, seperti CourseNotModifiable. Untuk memperbaiki FAILED_PRECONDITION, instruksikan pengguna untuk melakukan beberapa tindakan, 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 dari 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 pengguna untuk 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 boleh dihapus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk mentransfer kepemilikan folder Drive kursus ke pengguna lain, lalu coba lagi.

CannotRemoveCourseOwner

CannotRemoveCourseOwner menunjukkan bahwa pemilik kursus tidak boleh dihapus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan bahwa pemilik kursus tidak boleh dihapus. Pada umumnya, pengguna mencoba menghapus dirinya sendiri, yang tidak diizinkan.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete menunjukkan bahwa pemilik kursus tidak boleh dihapus karena transfer kepemilikan kelas ini masih berlangsung.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk menunggu beberapa saat hingga tindakan asinkron untuk mentransfer kepemilikan kelas selesai, lalu coba lagi.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner menunjukkan bahwa pengajar tidak boleh dihapus dari kursus tanpa pemilik.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan bahwa pengajar tidak boleh dihapus. Pada umumnya, akun pengguna pemilik kursus telah dihapus, sehingga menyebabkan status kursus tidak valid.

CourseMemberLimitReached

CourseMemberLimitReached menunjukkan bahwa tindakan yang dicoba akan melebihi jumlah maksimum anggota kursus yang diizinkan. Kode ini biasanya ditampilkan oleh students.create() Untuk informasi lebih lanjut, lihat bagian "Batas ukuran kelas" dalam 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 mengizinkan propertinya diubah (selain status kursus itu sendiri).

Kemungkinan Tindakan: Minta pengguna untuk mengubah kursus ke 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 teachers.create(). Untuk informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" dalam artikel pusat bantuan Menambahkan rekan pengajar ke kelas.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk menghapus pengajar kursus yang tidak diperlukan. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan teachers.delete() untuk mengelola daftar nama pengajar atas nama pengguna.

InactiveCourseOwner

InactiveCourseOwner menunjukkan bahwa tindakan yang diminta tidak diizinkan karena akun pemilik kursus dihapus. Administrator pemilik kursus harus memulihkan akun pemilik kursus sebelum mengambil tindakan yang diminta.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan administrator untuk memulihkan akun pemilik kursus sebelum mencoba kembali operasi tersebut.

IneligibleOwner

IneligibleOwner menunjukkan bahwa pengguna tidak dapat ditambahkan sebagai pemilik kursus karena pengguna tersebut bukan rekan pengajar.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan. Jika pengguna yang meminta bukan administrator, sarankan agar mereka terlebih dahulu mengirimkan undangan kepada pengguna tersebut untuk menjadi pengajar di kursus sebelum memperbarui pemilik. Jika pengguna yang meminta adalah administrator, sarankan agar mereka menambahkan pengguna tersebut sebagai rekan pengajar kursus terlebih dahulu.

PendingInvitationExists

PendingInvitationExists menunjukkan bahwa seseorang telah diundang untuk mengambil kepemilikan kursus. Error ini terjadi selama transfer kepemilikan kursus saat 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 bahwa kursus tidak dapat dibuat dengan pengguna sebagai pemilik kursus. Pengguna yang meminta dan bukan administrator dapat melihat error ini jika mereka mencoba membuat kursus dengan pengguna selain dirinya sebagai pemilik. Administrator yang meminta pengguna mungkin melihat error ini jika akun pengguna yang ditentukan sebagai pemilik tidak ada atau pengguna tidak berada di domainnya.

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 informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" dalam artikel pusat bantuan Mengundang siswa ke kelas.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk keluar dari kursus yang tidak diikuti. Pengguna dapat mempertimbangkan untuk membuat akun tambahan jika mereka 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 Classroom API yang umum.

CannotDirectAddUser

CannotDirectAddUser menunjukkan bahwa pengguna tidak dapat langsung ditambahkan ke kursus. Kode ini terjadi saat administrator domain mencoba menambahkan pengguna ke kursus dan pengguna tersebut tidak memiliki alamat email atau tidak merupakan bagian dari domain.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan administrator domain untuk 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: Arahkan 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: Arahkan pengguna ke petunjuk tentang mengaktifkan akses Classroom. Pengguna mungkin juga menggunakan akun yang salah, jadi Anda juga dapat memberikan link untuk menggunakan beberapa akun sehingga 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 sehingga Anda dapat memperoleh parameter kueri addOnToken baru dari URL permintaan.

InvalidAddOnToken

InvalidAddOnToken menunjukkan bahwa token add-on yang diteruskan dalam permintaan tidak diberi otorisasi untuk membuat lampiran add-on pada tugas.

Kemungkinan Tindakan: Error ini dapat ditampilkan 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 Play yang berbeda.

Tindakan yang Mungkin Dilakukan: Tunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang diinginkan. Resource ini hanya dapat dibuat oleh project Developer Console dari client ID OAuth yang membuat resource.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings menunjukkan bahwa permintaan mencoba mengubah setelan periode penilaian di kursus tempat pengguna yang meminta atau pemilik kursus tidak memiliki lisensi Google Workspace for Education yang sesuai.

Kemungkinan Tindakan: Tunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang dimaksud untuk memperbarui setelan periode penilaian karena status pemberian lisensi pengguna yang meminta atau pemilik kursus. 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, sudah habis. Jenis error permintaan ini biasanya terjadi karena aplikasi Anda menghasilkan beban yang berlebihan.

Untuk menghindari pemicuan batas ini dan meningkatkan keandalan aplikasi, gunakan mekanisme percobaan ulang. 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, kirimkan permintaan peningkatan kuota. Untuk informasi lebih lanjut, lihat artikel pusat bantuan Memantau kuota API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached menunjukkan bahwa pengguna telah bergabung dengan jumlah kursus maksimum yang diizinkan dalam satu hari. Untuk informasi selengkapnya, lihat bagian "Undangan dan ukuran grup" di artikel pusat bantuan Memahami kebijakan dan batas Grup.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk menunggu satu hari sebelum bergabung ke kursus.

HTTP 500: INTERNAL

INTERNAL menunjukkan bahwa error tidak terduga muncul saat memproses permintaan. Error permintaan INTERNAL juga sering kali dapat diatasi dengan menggunakan backoff eksponensial untuk mencoba ulang permintaan. Jika error INTERNAL berlanjut, error tersebut dapat dilaporkan dengan melaporkan bug di issue tracker publik Classroom API.