Takvim API'si iki düzeyde hata bilgisi döndürür:
- Üstbilgideki HTTP hata kodları ve mesajları
- Yanıt gövdesinde, hatayı nasıl ele alacağınızı belirlemenize yardımcı olabilecek ek bilgiler içeren bir JSON nesnesi.
Bu sayfanın geri kalanında, takvim hatalarına dair referanslar ve bu hataları uygulamanızda nasıl ele alacağınızla ilgili bazı bilgiler verilmiştir.
Eksponansiyel geri yükleme uygulama
Cloud API'leri belgelerinde, üssel geri çekilme ve Google API'leriyle nasıl kullanılacağı hakkında ayrıntılı bilgi verilmektedir.
Hatalar ve önerilen işlemler
Bu bölümde, listelenen her hatanın tam JSON gösterimi ve hatayı gidermek için uygulayabileceğiniz önerilen işlemler sağlanır.
400: Hatalı İstek
Kullanıcı hatası. Bu durum, gerekli bir alanın veya parametrenin sağlanmadığı, sağlanan değerin geçersiz olduğu ya da sağlanan alanların kombinasyonunun geçersiz olduğu anlamına gelebilir.
{
"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 yeniden denemeyin. Bunun yerine hata mesajını okuyup 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 kullanarak istekleri yetkilendirme bölümünde açıklandığı şekilde OAuth akışına yönlendirin.
- Bu hatayı bir hizmet hesabı için görüyorsanız hizmet hesabı sayfasındaki tüm adımları başarıyla tamamladığınızdan emin olun.
403: Kullanıcı Hızı Sınırı Aşıldı
Developer Console'daki sınırlardan birine ulaşıldı.
{
"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.
- Developer Console projesinde kullanıcı başına kotayı artırın.
- Bir kullanıcı, Google Workspace hesabındaki birçok kullanıcı adına çok sayıda istek gönderiyorsa alan genelinde yetki verilmiş bir hizmet hesabı kullanmayı ve
quotaUser
parametresini ayarlamayı düşünebilirsiniz. - Eksponansiyel geri yükleme kullanın.
403: Sıklık Sınırı Aşıldı
Kullanıcı, Google Takvim API'sinin takvim başına veya kimliği doğrulanmış kullanıcı başına maksimum istek hızı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 kodu döndürebilir. Şu anda işlevsel olarak benzerler ve üssel geri çekilme kullanılarak aynı şekilde yanıtlanmalıdır.
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ına karşı korumak için uygulanan Google 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ı sayfasında bulabilirsiniz.
403: Düzenleyen olmayanlar için yasak
Etkinlik güncelleme isteği, paylaşılan etkinlik özelliklerinden birini düzenleyenin kopyası olmayan bir kopyada ayarlamaya çalışıyor. Paylaşılan özellikler (örneğin, guestsCanInviteOthers
, guestsCanModify
veya guestsCanSeeOtherGuests
) yalnızca düzenleyen tarafından ayarlanabilir.
{
"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:
- Etkinlikler: ekle, Etkinlikler: içe aktar veya Etkinlikler: güncelle yöntemini kullanıyorsanız ve isteğiniz paylaşılan özellikler içermiyorsa bu, paylaşılan özellikleri varsayılan değerlerine ayarlamaya çalışmakla aynıdır. Bunun yerine Etkinlikler: yaması işlevini kullanabilirsiniz.
- İsteğinizde paylaşılan özellikler varsa yalnızca düzenleyenin kopyasını güncelliyorsanız bu özellikleri değiştirmeye çalıştığınızdan emin olun.
404: Bulunamadı
Belirtilen kaynak bulunamadı. Bu durum birkaç durumda ortaya çıkabilir. Aşağıda bazı örnekler verilmiştir:
- İstenen kaynak (sağlanan kimlikle) hiç mevcut olmamışsa
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 bu 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 update yöntem çağrısını 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: Başarıyla tamamlanan ve kesinlikle başarısız olan tüm toplu öğeleri hariç tutun ve kalanları farklı bir events.batch
veya ilgili tek etkinlik işlemlerinde tekrar deneyin.
410: Yok
syncToken
veya updatedMin
parametreleri artık geçerli değil. Bu hata, bir istek zaten silinmiş bir etkinliği silmeye çalışırsa da ortaya çıkabilir.
{
"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 deposu silin ve yeniden senkronize edin. Daha fazla bilgi için Kaynakları Verimli Bir Şekilde Senkronize Etme başlıklı makaleyi inceleyin.
Daha önce silinmiş etkinlikler için başka bir işlem yapmanız gerekmez.
412: Ön Koşul Başarısız Oldu
If-match başlığında sağlanan etag artık kaynağın mevcut etag'ine karşılık gelmiyor.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "conditionNotMet",
"message": "Precondition Failed",
"locationType": "header",
"location": "If-Match",
}
],
"code": 412,
"message": "Precondition Failed"
}
}
Önerilen işlem: Öğeyi 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
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 kodu döndürebilir. Şu anda işlevsel olarak benzerler ve üssel geri çekilme kullanılarak aynı şekilde yanıtlanmalıdır.
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.