Google Takvim API'si, iki düzeyde hata bilgisi döndürür:
- Üstbilgideki HTTP hata kodları ve mesajları
- Yanıt gövdesinde, hatanın nasıl ele alınacağını belirlemenize yardımcı olabilecek ek ayrıntılar içeren bir JSON nesnesi.
Bu sayfanın geri kalanında, Takvim hatalarıyla ilgili referans bilgileri ve bunları uygulamanızda nasıl ele alacağınızla ilgili bazı yönergeler verilmektedir.
Eksponansiyel geri yükleme uygulama
Google Cloud Storage belgelerinde, eksponansiyel geri yükleme ve bunun Google API'leriyle nasıl kullanılacağı açıklanmaktadır.
Hatalar ve önerilen işlemler
Bu bölümde, listelenen her hatanın tam JSON gösterimi ve hatayı ele almak için yapabileceğiniz önerilen işlemler yer alır.
400: Hatalı İstek
Kullanıcı hatası. Bu hata, zorunlu bir alanı veya parametreyi sağlamadığınızda, geçersiz bir değer sağladığınızda ya da geçersiz bir alan kombinasyonu sağladığınızda oluşur.
{
"error": {
"errors": [
{
"domain": "calendar",
"reason": "timeRangeEmpty",
"message": "The specified time range is empty.",
"locationType": "parameter",
"location": "timeMax"
}
],
"code": 400,
"message": "The specified time range is empty."
}
}
Önerilen işlem: Bu kalıcı bir hata olduğundan tekrar denemeyin. Bunun yerine hata mesajını okuyun ve isteğinizi buna göre değiştirin.
401: Geçersiz Kimlik Bilgileri
Geçersiz yetkilendirme başlığı. Kullandığınız erişim jetonunun süresi dolmuş veya jeton geçersiz.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}
Önerilen işlemler:
- Uzun süreli yenileme jetonunu kullanarak yeni bir erişim jetonu alın.
- Bu işlem başarısız olursa kullanıcıyı OAuth 2.0 ile istekleri yetkilendirme bölümünde açıklandığı gibi OAuth akışına yönlendirin.
- Bu hata bir hizmet hesabında oluşursa hizmet hesabı sayfasındaki tüm adımları başarıyla tamamladığınızdan emin olun.
403: User Rate Limit Exceeded (Kullanıcı sıklık sınırı aşıldı)
Google Cloud Console'daki sınırlardan birine ulaşılmıştır.
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "userRateLimitExceeded",
"message": "User Rate Limit Exceeded"
}
],
"code": 403,
"message": "User Rate Limit Exceeded"
}
}
Önerilen işlemler:
- Uygulamanızın kotaları yönetme ile ilgili en iyi uygulamalara uyduğundan emin olun.
- Konsol projesinde kullanıcı başına kotayı artırın.
- Bir kullanıcı, Google Workspace hesabının birçok kullanıcısı adına çok sayıda istekte bulunuyorsa alan genelinde yetkilendirme ile bir hizmet hesabı kullanmayı ve
quotaUserparametresini ayarlamayı düşünebilirsiniz. - Eksponansiyel geri yükleme kullanın.
403: Sıklık sınırı aşıldı
Kullanıcı, Takvim API'sinin takvim başına veya kimliği doğrulanmış kullanıcı başına maksimum istek oranına ulaştı.
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "rateLimitExceeded",
"message": "Rate Limit Exceeded"
}
],
"code": 403,
"message": "Rate Limit Exceeded"
}
}
Önerilen işlem: rateLimitExceeded hataları 403 veya 429 hata kodları döndürebilir. İşlevsel olarak benzerdirler ve eksponansiyel geri yükleme kullanarak aynı şekilde ele alınmalıdırlar. Ayrıca, uygulamanızın kotaları yönetme ile ilgili en iyi uygulamalara uyduğundan emin olun.
403: Takvim kullanım sınırları aşıldı
Kullanıcı, Google kullanıcılarını ve altyapısını kötüye kullanım davranışlarından korumak için belirlenen Takvim sınırlarından birine ulaştı.
{
"error": {
"errors": [
{
"domain": "usageLimits",
"message": "Calendar usage limits exceeded.",
"reason": "quotaExceeded"
}
],
"code": 403,
"message": "Calendar usage limits exceeded."
}
}
Önerilen işlemler:
- Takvim kullanım sınırları hakkında daha fazla bilgiyi Google Workspace Yönetici Yardım Merkezi'nde bulabilirsiniz.
403: Düzenleyici olmayanlar için yasak
Etkinlik güncelleme isteği, paylaşılan etkinlik özelliklerinden birini düzenleyene ait olmayan bir kopyada ayarlamaya çalışıyor. Yalnızca düzenleyen, paylaşılan özellikler (ör. guestsCanInviteOthers, guestsCanModify veya guestsCanSeeOtherGuests) ayarlayabilir.
{
"error": {
"errors": [
{
"domain": "calendar",
"reason": "forbiddenForNonOrganizer",
"message": "Shared properties can only be changed by the organizer of the event."
}
],
"code": 403,
"message": "Shared properties can only be changed by the organizer of the event."
}
}
Önerilen işlemler:
- Events: insert, Events: import veya Events: update yöntemlerini kullanıyorsanız ve isteğiniz herhangi bir paylaşılan özellik içermiyorsa bu, özellikleri varsayılan değerlerine ayarlamaya çalışmaya eşdeğerdir. Bunun yerine Events: patch işlevini kullanabilirsiniz.
- İsteğinizde paylaşılan özellikler varsa düzenleyenin kopyasını güncelliyorsanız bu özellikleri değiştirmeye çalıştığınızdan emin olun.
404: Bulunamadı
Belirtilen kaynak bulunamadı. Bu durumun yaşanmasının birkaç nedeni vardır. Aşağıda bazı örnekler verilmiştir:
- İstenen kaynak (belirtilen kimlikle) hiç mevcut olmadığında.
- Kullanıcının erişemediği bir takvime erişirken
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
Önerilen işlem: Eksponansiyel geri yükleme kullanın.
409: İstenen tanımlayıcı zaten mevcut
Depolama alanında, verilen kimliğe sahip bir örnek zaten var.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "duplicate",
"message": "The requested identifier already exists."
}
],
"code": 409,
"message": "The requested identifier already exists."
}
}
Önerilen işlem:
Yeni bir örnek oluşturmak istiyorsanız yeni bir kimlik oluşturun. Aksi takdirde, events.update yöntemini kullanın.
409: Çakışma
Bir events.batch işlemindeki toplu öğe, istenen diğer toplu öğelerle işlem çakışması nedeniyle yürütülemiyor.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "conflict",
"message": "Conflict"
}
],
"code": 409,
"message": "Conflict"
}
}
Önerilen işlem: Tamamlanan ve başarısız olan öğeleri kaldırın, ardından kalan öğeleri farklı bir events.batch veya ilgili tek etkinlik işlemlerinde yeniden deneyin.
410: Gone
syncToken veya updatedMin parametreleri artık geçerli değil. Bu hata, zaten silinmiş bir etkinliği silmeye çalışan bir istek olduğunda da oluşabilir.
{
"error": {
"errors": [
{
"domain": "calendar",
"reason": "fullSyncRequired",
"message": "Sync token is no longer valid, a full sync is required.",
"locationType": "parameter",
"location": "syncToken"
}
],
"code": 410,
"message": "Sync token is no longer valid, a full sync is required."
}
}
veya
{
"error": {
"errors": [
{
"domain": "calendar",
"reason": "updatedMinTooLongAgo",
"message": "The requested minimum modification time lies too far in the past.",
"locationType": "parameter",
"location": "updatedMin"
}
],
"code": 410,
"message": "The requested minimum modification time lies too far in the past."
}
}
veya
{
"error": {
"errors": [
{
"domain": "global",
"reason": "deleted",
"message": "Resource has been deleted"
}
],
"code": 410,
"message": "Resource has been deleted"
}
}
Önerilen işlem: syncToken veya updatedMin parametreleri için depoyu silin ve yeniden senkronize edin. Daha fazla bilgi için Kaynakları verimli bir şekilde senkronize etme başlıklı makaleye göz atın.
Daha önce silinen etkinlikler için başka bir işlem yapılmasına gerek yoktur.
412: Önceden Koşullandırma Başarısız Oldu
If-Match üstbilgisinde sağlanan ETag, artık kaynağın mevcut ETag'iyle eşleşmiyor.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "conditionNotMet",
"message": "Precondition Failed",
"locationType": "header",
"location": "If-Match"
}
],
"code": 412,
"message": "Precondition Failed"
}
}
Önerilen işlem: Varlığı yeniden getirin ve değişiklikleri yeniden uygulayın. Daha fazla bilgi için Kaynakların belirli sürümlerini alma başlıklı makaleyi inceleyin.
429: Çok fazla istek var
Kullanıcı belirli bir süre içinde çok fazla istek gönderdiğinde rateLimitExceeded hatası oluşur.
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "rateLimitExceeded",
"message": "Rate Limit Exceeded"
}
],
"code": 429,
"message": "Rate Limit Exceeded"
}
}
Önerilen işlem: rateLimitExceeded hataları 403 veya 429 hata kodları döndürebilir. İşlevsel olarak benzerdirler ve eksponansiyel geri yükleme kullanarak aynı şekilde ele alınmalıdırlar. Ayrıca, uygulamanızın kotaları yönetme ile ilgili en iyi uygulamalara uyduğundan emin olun.
500: Arka Uç Hatası
İstek işlenirken beklenmeyen bir hata oluştu.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 500,
"message": "Backend Error"
}
}
Önerilen işlem: Eksponansiyel geri yükleme kullanın.