Kami telah mengategorikan error ke dalam kategori luas berikut:
- Autentikasi
- Dapat dicoba lagi
- Validasi
- Terkait sinkronisasi
Meskipun kategori ini tidak mencakup semua kemungkinan error, dan beberapa error mungkin termasuk dalam lebih dari satu kategori, kategori ini tetap dapat berfungsi sebagai titik awal untuk menyusun penanganan error aplikasi Anda. Lihat referensi berikut untuk mengetahui detail selengkapnya tentang error tertentu:
- Error Umum memberikan detail selengkapnya tentang error tertentu.
- google.rpc.Status untuk detail tentang model error logis yang digunakan oleh API.
Error autentikasi
Autentikasi mengacu pada apakah aplikasi Anda telah diberi izin oleh pengguna untuk mengakses Google Ads atas nama mereka. Autentikasi dikelola melalui kredensial yang dihasilkan oleh alur OAuth2.
Alasan paling umum terjadinya error autentikasi yang berasal dari faktor di luar
kendali Anda adalah pengguna terautentikasi telah mencabut izin yang mereka berikan
kepada aplikasi Anda untuk bertindak atas nama mereka. Misalnya, jika aplikasi Anda mengelola akun Google Ads terpisah untuk klien independen dan melakukan autentikasi secara terpisah sebagai setiap klien saat mengelola akun klien tersebut, klien dapat mencabut akses aplikasi Anda kapan saja. Bergantung pada waktu pencabutan akses Anda, API dapat langsung menampilkan error AuthenticationError.OAUTH_TOKEN_REVOKED
, atau objek kredensial bawaan di Library Klien dapat menampilkan pengecualian token yang dicabut. Dalam kedua kasus tersebut, jika aplikasi Anda memiliki UI untuk klien Anda, aplikasi tersebut dapat meminta klien untuk meluncurkan kembali alur OAuth2 guna membangun kembali izin aplikasi Anda untuk bertindak atas nama mereka.
Error yang dapat dicoba lagi
Beberapa error, seperti TRANSIENT_ERROR
atau INTERNAL_ERROR
,
dapat menunjukkan masalah sementara yang dapat diselesaikan dengan mencoba lagi permintaan
setelah jeda singkat.
Untuk permintaan yang dimulai pengguna, salah satu strategi adalah segera menunjukkan error di UI Anda dan memberi pengguna opsi untuk memicu percobaan ulang. Atau, aplikasi Anda dapat mencoba ulang permintaan secara otomatis terlebih dahulu, hanya menampilkan error di UI setelah mencapai jumlah percobaan ulang maksimum atau total waktu tunggu pengguna.
Untuk permintaan yang dimulai di backend, aplikasi Anda harus otomatis mencoba ulang permintaan hingga jumlah maksimum percobaan ulang.
Saat mencoba lagi permintaan, gunakan kebijakan backoff eksponensial. Misalnya, jika Anda pertama kali menjeda 5 detik sebelum percobaan ulang pertama, Anda dapat menjeda 10 detik setelah percobaan ulang kedua dan 20 detik setelah percobaan ulang ketiga. Backoff eksponensial membantu memastikan Anda tidak memanggil API terlalu agresif.
Error validasi
Error validasi menunjukkan bahwa input ke operasi tidak dapat diterima.
Misalnya, PolicyViolationError
,
DateError
,
DateRangeError
,
StringLengthError
, dan
UrlFieldError
.
Error validasi paling sering terjadi dalam permintaan yang dimulai pengguna, saat pengguna telah memasukkan input yang tidak valid. Dalam kasus ini, Anda harus memberikan pesan error yang sesuai kepada pengguna berdasarkan error API tertentu yang Anda terima. Anda juga dapat memvalidasi input pengguna untuk kesalahan umum sebelum melakukan panggilan API, sehingga aplikasi Anda lebih responsif dan penggunaan API Anda lebih efisien. Untuk permintaan dari backend, aplikasi Anda dapat menambahkan operasi yang gagal ke antrean untuk ditinjau oleh operator manusia.
Error terkait sinkronisasi
Banyak aplikasi Google Ads mempertahankan database lokal untuk menyimpan objek Google Ads-nya. Salah satu
tantangan pendekatan ini adalah database lokal dapat menjadi tidak sinkron dengan
objek sebenarnya di Google Ads. Misalnya, pengguna dapat menghapus grup iklan langsung di Google Ads, tetapi aplikasi dan database lokal tidak mengetahui perubahan tersebut dan terus mengeluarkan panggilan API seolah-olah grup iklan tersebut ada. Masalah sinkronisasi ini dapat
terjadi sebagai berbagai error seperti DUPLICATE_CAMPAIGN_NAME
,
DUPLICATE_ADGROUP_NAME
,
AD_NOT_UNDER_ADGROUP
,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
,
dan banyak lagi.
Untuk permintaan yang dimulai pengguna, salah satu strateginya adalah memberi tahu pengguna tentang kemungkinan masalah sinkronisasi, segera meluncurkan tugas yang mengambil class objek Google Ads yang relevan dan memperbarui database lokal, lalu meminta pengguna untuk memuat ulang UI.
Untuk permintaan backend, beberapa error memberikan informasi yang cukup bagi aplikasi Anda untuk memperbaiki database lokal Anda secara otomatis dan bertahap. Misalnya,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
akan menyebabkan aplikasi Anda menandai iklan tersebut sebagai
dihapus di database lokal Anda. Error yang tidak dapat Anda tangani dengan cara ini dapat menyebabkan aplikasi Anda meluncurkan tugas sinkronisasi yang lebih lengkap atau ditambahkan ke antrean untuk ditinjau oleh operator manusia.