Video: 2019'daki atölye çalışmasında hata işleme ile ilgili konuşmaya göz atın
Hatalar, yanlış ortam kurulumundan, yazılımınızdaki bir hatadan veya kullanıcıdan gelen geçersiz girişten kaynaklanabilir. Kaynağı ne olursa olsun, sorunu gidermeniz ve kodunuzu düzeltmeniz ya da kullanıcı hatasını işleyecek mantık eklemeniz gerekir. Bu kılavuzda, Google Ads API'den gelen hatalarla ilgili sorunları giderirken kullanabileceğiniz bazı en iyi uygulamalar ele alınmaktadır.
Bağlantıyı sağlama
Google Ads API'ye erişiminiz olduğundan ve doğru bir kurulum yaptığınızdan emin olun. Yanıtınızda HTTP hataları varsa bunları dikkatlice ele aldığınızdan ve kodunuzdan kullanmak istediğiniz hizmetlere ulaştığınızdan emin olun.
Hizmetlerin kimliğinizi doğrulayabilmesi için kimlik bilgileriniz isteğinize yerleştirilir. Özellikle istemci kitaplıklarını kullanmadan çağrıları işleyecekseniz Google Ads API istek ve yanıtlarının yapısını öğrenin. Her istemci kitaplığı, kimlik bilgilerinizin yapılandırma dosyasına nasıl ekleneceğiyle ilgili talimatlarla birlikte gönderilir (istemci kitaplığının README dosyasına bakın).
Doğru kimlik bilgilerini kullandığınızı doğrulayın. Hızlı Başlangıç kılavuzumuz, ihtiyacınız olan doğru seti edinme sürecinde size yol gösterir. Örneğin, aşağıdaki yanıt hatası, kullanıcının geçersiz kimlik doğrulama kimlik bilgileri gönderdiğini gösterir:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
Bu adımları uygulamanıza rağmen sorun yaşamaya devam ediyorsanız Google Ads API hatalarını gidermeye başlamanız gerekir.
Sorunu belirleme
Google Ads API, hataları genellikle yanıttaki hata listesini içeren bir JSON hata nesnesi olarak bildirir. Bu nesneler, hata kodunun yanı sıra neden oluştuğunu açıklayan bir mesaj da sağlar. Bunlar, sorunun ne olabileceğine dair ilk sinyallerdir.
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword/matchtype'.",
"location": { "operationIndex": "1" }
}
]
}
Tüm istemci kitaplıklarımız, yanıttaki hataları kapsayan istisnalar oluşturur. Bu istisnaları yakalamak ve mesajları bir günlükte veya sorun giderme ekranında yazdırmak, başlamak için harika bir yoldur. Bu bilgileri uygulamanızdaki diğer kaydedilmiş etkinliklerle entegre etmek, sorunu neyin tetikliyor olabileceğine dair iyi bir genel bakış sunar. Günlüklerdeki hatayı belirledikten sonra ne anlama geldiğini anlamanız gerekir.
Hatayı araştırma
En sık karşılaşılan hataları ele alan Sık Karşılaşılan Hatalar dokümanımıza bakın. Hata mesajı, ilgili API referansları ve hatanın nasıl önleneceği veya nasıl ele alınacağı açıklanır.
Sık karşılaşılan hatalarla ilgili dokümanlarımızda bu hatadan özellikle bahsedilmiyorsa referans dokümanlarımıza göz atın ve hata dizesini bulun.
API ile ilgili deneyimlerini paylaşan diğer geliştiricilere erişmek için destek kanallarımızda arama yapın. Başka bir kullanıcı, karşılaştığınız sorunu yaşamış ve çözmüş olabilir.
Belgelenmemiş hatalarla karşılaşırsanız bunları forumda bize bildirin.
Doğrulama veya hesap sınırı sorunlarını giderme konusunda yardım almak için Google Ads Yardım Merkezi'ne gidin. Google Ads API, temel Google Ads ürününün kurallarını ve sınırlamalarını devralır.
Blog yayınları, uygulamanızda sorun giderirken zaman zaman iyi bir referans olabilir.
Hatayı araştırdıktan sonra temel nedeni belirlemeniz gerekir.
Nedeni bulma
Hatanın nedenini belirlemek için istisna mesajını kontrol edin. Yanıtı inceledikten sonra olası bir neden için isteği kontrol edin. Bazı Google Ads API hata mesajları, fieldPathElements
GoogleAdsError
alanının location
alanında bulunur. Bu, hatanın istekte nerede oluştuğunu gösterir. Örneğin:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"operationIndex": "0",
"fieldPathElements": [ { "fieldName": "keyword" } ]
}
}
]
}
Bir sorunu giderirken uygulamanızın API'ye yanlış bilgi sağladığı anlaşılabilir. Hata ayıklama konusunda size yardımcı olması için Eclipse gibi bir etkileşimli geliştirme ortamı (IDE) kullanmanızı önemle tavsiye ederiz (Eclipse, öncelikle Java geliştirmek için kullanılan ücretsiz ve açık kaynaklı bir IDE'dir ancak diğer diller için eklentileri de vardır). Kesme noktaları ayarlamanıza ve kodunuzda satır satır ilerlemenize olanak tanır.
İsteğin, uygulama girişlerinizle eşleştiğinden emin olmak için iki kez kontrol edin (örneğin, kampanyanın adı isteğe dahil edilmemiş olabilir). Yapmak istediğiniz güncellemelerle eşleşen bir alan maskesi gönderdiğinizden emin olun. Google Ads API, seyrek güncellemeleri destekler. Bir mutasyon isteğinde alan maskesinden bir alanın çıkarılması, API'nin bu alanı olduğu gibi bırakması gerektiğini gösterir. Uygulamanız bir nesneyi alıp değiştirip geri gönderiyorsa güncelleme işlemini desteklemeyen bir alana yazıyor olabilirsiniz. Alan açıklamasına referans belgelerinden göz atarak alanı ne zaman veya güncelleyip güncelleyemeyeceğinizle ilgili kısıtlamalar olup olmadığını kontrol edin.
Nasıl yardım alabilirim?
Sorunu kendi başınıza tanımlayıp çözmeniz her zaman mümkün olmayabilir. Forumda soru sormak, sorunuzu aynı sorunla uğraşmak zorunda kalmış olabilecek binlerce geliştiricinin görmesini sağlar.
Sorgularınıza mümkün olduğunca fazla bilgi eklemeye çalışın. Önerilen öğeler şunlardır:
- Temizlenmiş JSON isteği ve yanıtı. Geliştirici jetonunuz veya AuthToken'ınız gibi hassas bilgileri kaldırdığınızdan emin olun.
- Kod snippet'leri. Dile özgü bir sorun yaşıyorsanız veya API ile çalışma konusunda yardım istiyorsanız ne yaptığınızı açıklamanıza yardımcı olması için bir kod snippet'i ekleyin.
- RequestId. Bu sayede, üretim ortamına karşı yapılan istekler Google Geliştirici İlişkileri ekibi üyeleri tarafından bulunabilir. Yanıt hatalarını kapsayan istisnalarda özellik olarak yer alan requestId'nin ve yalnızca requestId'den daha fazla bağlamın günlüklerinize kaydedilmesini öneririz.
- Çalışma zamanı/yorumlayıcı sürümü ve platform gibi ek bilgiler de sorun giderme sırasında yararlı olabilir.
Sorunu çözme
Sorunu belirleyip çözümünü bulduğunuza göre artık değişikliğinizi yapma ve düzeltmeyi bir test hesabında (tercih edilen) veya üretimde (hata yalnızca belirli bir üretim hesabındaki veriler için geçerliyse) test etme zamanı geldi.
Paylaşım
Forumda daha önce ele alınmamış bir hatayla ilgili soru yayınladıysanız ve çözümünü bulduysanız çözümü ileti dizisine ekleyebilirsiniz. Bir sonraki seferde aynı sorunla karşılaşan geliştiriciler bu sorunu hemen çözebilir.
Sonraki Adımlar
Bu sorunu çözdüğünüze göre, bu durumun tekrar yaşanmaması için kodunuzu iyileştirmenin yollarını fark ettiniz mi?
İyi bir birim testi grubu oluşturmak, kod kalitesini ve güvenilirliğini önemli ölçüde artırır. Ayrıca, önceki işlevlerin bozulmadığından emin olmak için yeni değişikliklerin test edilme sürecini de hızlandırır. İyi bir hata işleme stratejisi, sorun giderme için gerekli tüm verilerin ortaya çıkarılmasında da önemlidir.