HTTP v1 API'si için REST hata kodları
HTTP v1 API'si için HTTP hata yanıtları bir hata kodu, bir hata mesajı ve hata durumu içerir. Ayrıca, hatayla ilgili daha fazla ayrıntı içeren bir details
dizisi de içerebilirler.
Aşağıda iki örnek hata yanıtı verilmiştir:
1. örnek: Veri mesajında geçersiz bir değer içeren HTTP v1 API isteğinden gelen hata yanıtı
{
"error": {
"code": 400,
"message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message.data[0].value",
"description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
}
]
}
]
}
}
2. örnek: Geçersiz kayıt jetonu içeren bir HTTP v1 API isteğinden gelen hata yanıtı
{
"error": {
"code": 400,
"message": "The registration token is not a valid FCM registration token",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "INVALID_ARGUMENT"
}
]
}
}
Her iki mesajın da aynı koda ve duruma sahip olduğunu ancak details dizisinin farklı türlerde değerler içerdiğini unutmayın. İlk örnekte, istek değerlerinde hata olduğunu belirten type
type.googleapis.com/google.rpc.BadRequest
yer alıyor. Tür type.googleapis.com/google.firebase.fcm.v1.FcmError
olan ikinci örnekte FCM'ye özgü bir hata var.
Birçok hata için ayrıntılar dizisi, hata ayıklama ve çözüm bulma konusunda ihtiyacınız olan bilgileri içerir.
Aşağıdaki tabloda FCM v1 REST API hata kodları ve açıklamaları listelenmektedir.
Hata Kodu | Açıklama ve Çözüm Adımları |
---|---|
UNSPECIFIED_ERROR Bu hata hakkında daha fazla bilgi yok. |
Yok. |
INVALID_ARGUMENT (HTTP hata kodu = 400) İstek parametreleri geçersizdi. Hangi alanın geçersiz olduğunu belirtmek için google.rpc.BadRequest türünde bir uzantı döndürülür. |
Geçersiz kayıt, geçersiz paket adı, çok büyük mesaj, geçersiz veri anahtarı, geçersiz TTL veya diğer geçersiz parametreler olası nedenler arasındadır. Geçersiz kayıt: Sunucuya ilettiğiniz kayıt jetonunun biçimini kontrol edin. Bu jetonun, istemci uygulamasının FCM'ye kaydolurken aldığı kayıt jetonuyla eşleştiğinden emin olun. Jetonu kısaltmayın veya ek karakterler eklemeyin. Geçersiz paket adı: Mesajın, paket adı istekte iletilen değerle eşleşen bir kayıt jetonuna gönderildiğinden emin olun. İleti çok büyük: Bir iletiye dahil edilen yük verilerinin toplam boyutunun FCM sınırlarını (Çoğu ileti için 4096 bayt veya konulara gönderilen iletiler için 2048 bayt) aşmadığından emin olun. Buna hem anahtarlar hem de değerler dahildir. Geçersiz veri anahtarı: Yük verilerinin, FCM tarafından dahili olarak kullanılan bir anahtar (ör. from veya gcm ya da google ile başlayan herhangi bir değer) içermediğinden emin olun. Bazı kelimelerin (ör. collapse_key) FCM tarafından da kullanıldığını ancak yükte izin verildiğini unutmayın. Bu durumda yük değeri, FCM değeriyle geçersiz kılınır. Geçersiz TTL: TTL'de kullanılan değerin 0 ile 2.419.200 (4 hafta) arasında bir süreyi saniye cinsinden temsil eden bir tam sayı olduğunu kontrol edin. Geçersiz parametreler: Sağlanan parametrelerin doğru ada ve türe sahip olup olmadığını kontrol edin. |
UNREGISTERED (HTTP hata kodu = 404) Uygulama örneğinin FCM kaydı silindi. Bu genellikle kullanılan jetonun artık geçerli olmadığı ve yeni bir jetonun kullanılması gerektiği anlamına gelir. |
Bu hata, kayıt jetonlarının eksik olmasından veya kayıtlı olmayan jetonlardan kaynaklanabilir. Kayıt Eksik: İletinin hedefi token değeri ise isteğin kayıt jetonu içerdiğinden emin olun.Kayıtlı değil: Mevcut bir kayıt jetonu, aşağıdakiler de dahil olmak üzere çeşitli senaryolarda geçerliliğini kaybedebilir: - İstemci uygulaması FCM'den kaydını silerse. - İstemci uygulaması otomatik olarak kaydı silinirse (ör. kullanıcı uygulamayı kaldırırsa). Örneğin, iOS'te APNs geri bildirim hizmeti, APNs jetonunu geçersiz olarak bildirmişse. - Kayıt jetonunun süresi dolarsa (örneğin, Google kayıt jetonlarını yenilemeye karar verebilir veya iOS cihazlarda APNs jetonunun süresi dolmuş olabilir). - İstemci uygulaması güncellenmiş ancak yeni sürüm mesaj alacak şekilde yapılandırılmamışsa. Bu durumların tümünde, bu kayıt jetonunu uygulama sunucusundan kaldırın ve mesaj göndermek için kullanmayı bırakın. |
SENDER_ID_MISMATCH (HTTP hata kodu = 403) Kimliği doğrulanmış gönderen kimliği, kayıt jetonunun gönderen kimliğinden farklı. |
Kayıt jetonu, belirli bir gönderen grubuyla ilişkilendirilir. Bir istemci uygulaması FCM'ye kaydolduğunda hangi gönderenlerin mesaj göndermesine izin verildiğini belirtmesi gerekir. İstemci uygulamasına ileti gönderirken bu gönderen kimliklerinden birini kullanmanız gerekir. Farklı bir gönderene geçerseniz mevcut kayıt jetonları çalışmaz. |
QUOTA_EXCEEDED (HTTP hata kodu = 429) İleti hedefi için gönderme sınırı aşıldı. Hangi kotanın aşıldığını belirtmek için google.rpc.QuotaFailure türünde bir uzantı döndürülür. |
Bu hatanın nedeni, aşılmış mesaj hızı kotası, aşılmış cihaz mesajı hızı kotası veya aşılmış konu mesajı hızı kotası olabilir. İleti hızı aşıldı: İletilerin gönderilme hızı çok yüksek. Mesaj gönderme hızınızı düşürmeniz gerekir. Reddedilen iletileri yeniden denemek için minimum 1 dakikalık ilk gecikmeyle eksponansiyel geri yükleme kullanın. Cihaz mesajı oranı aşıldı: Belirli bir cihaza gönderilen mesajların oranı çok yüksek. Tek bir cihaza yönelik mesaj sıklığı sınırı başlıklı makaleyi inceleyin. Bu cihaza gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için eksponansiyel geri yüklemeyi kullanın. Konu mesajı oranı aşıldı: Belirli bir konuya abone olan kullanıcılara gönderilen mesajların oranı çok yüksek. Bu konu için gönderilen mesaj sayısını azaltın ve göndermeyi yeniden denemek için en az 1 dakikalık başlangıç gecikmesiyle üstel geri yükleme kullanın. |
UNAVAILABLE (HTTP hata kodu = 503) Sunucu aşırı yüklendi. |
Sunucu, isteği zamanında işleyemedi. Aynı isteği yeniden deneyin ancak şunları yapmanız gerekir: - FCM Bağlantı Sunucusu'ndan gelen yanıtta varsa Retry-After üstbilgisine uyun. - Yeniden deneme mekanizmanızda eksponansiyel geri yükleme uygulayın. (Örneğin, ilk yeniden denemeden önce bir saniye beklediyseniz bir sonraki yeniden denemeden önce en az iki saniye, ardından 4 saniye vb. bekleyin.) Birden fazla ileti gönderiyorsanız jittering uygulamayı düşünebilirsiniz. Daha fazla bilgi için Yeniden denemeleri işleme başlıklı makaleyi inceleyin. Ayrıca, FCM'yi etkileyen devam eden hizmet kesintileri olup olmadığını belirlemek için FCM durum kontrol paneli'ni kontrol edin. Sorunlara neden olan gönderenler, izin verilmeyenler listesine alınma riskiyle karşı karşıyadır. |
INTERNAL (HTTP hata kodu = 500) Bilinmeyen dahili bir hata oluştu. |
Sunucu, isteği işlemeye çalışırken bir hatayla karşılaştı. Yeniden denemeleri işleme bölümündeki önerileri uygulayarak aynı isteği yeniden deneyebilir veya FCM durum kontrol panelini inceleyebilirsiniz. FCM'yi etkileyen devam eden hizmet kesintileri olup olmadığını belirlemek için Hata devam ederse lütfen Firebase Destek Ekibi ile iletişime geçin. |
THIRD_PARTY_AUTH_ERROR (HTTP hata kodu = 401) APNs sertifikası veya web push kimlik doğrulama anahtarı geçersiz ya da eksikti. |
Bir iOS cihazı hedefleyen mesaj veya web push kaydı gönderilemedi. Geliştirme ve üretim kimlik bilgilerinizin geçerliliğini kontrol edin. |
Yönetici SDK'sı hata kodları
Aşağıdaki tabloda, önerilen çözüm adımları da dahil olmak üzere Firebase Admin FCM API hata kodları ve açıklamaları listelenmiştir.
Hata Kodu | Açıklama ve Çözüm Adımları |
---|---|
messaging/invalid-argument |
Bir FCM yöntemine geçersiz bir bağımsız değişken sağlandı. Hata mesajında ek bilgiler yer almalıdır. |
messaging/invalid-recipient |
Hedeflenen mesaj alıcısı geçersiz. Hata mesajında ek bilgiler yer almalıdır. |
messaging/invalid-payload |
Geçersiz bir mesaj yükü nesnesi sağlandı. Hata mesajında ek bilgiler yer almalıdır. |
messaging/invalid-data-payload-key |
Veri mesajı yükünde geçersiz bir anahtar var. Kısıtlanmış anahtarlar için
DataMessagePayload referans belgelerine bakın.
|
messaging/payload-size-limit-exceeded |
Belirtilen ileti yükü, FCM boyut sınırlarını aşıyor. Çoğu ileti için sınır 4.096 bayttır. Konulara gönderilen mesajlar için sınır 2.048 bayttır. Toplam yük boyutu hem anahtarları hem de değerleri içerir. |
messaging/invalid-options |
Geçersiz bir ileti seçenekleri nesnesi sağlandı. Hata mesajında ek bilgiler yer almalıdır. |
messaging/invalid-registration-token |
Geçersiz kayıt jetonu sağlandı. Bu jetonun, istemci uygulamasının FCM'ya kaydolduktan sonra aldığı kayıt jetonuyla eşleştiğinden emin olun. Kısaltmayın veya ek karakterler eklemeyin. |
messaging/registration-token-not-registered |
Sağlanan kayıt jetonu kayıtlı değil. Daha önce geçerli olan bir kayıt jetonunun kaydı, aşağıdakiler de dahil olmak üzere çeşitli nedenlerle silinebilir:
|
messaging/invalid-package-name |
İleti, paket adı sağlanan
restrictedPackageName seçeneğiyle eşleşmeyen bir kayıt jetonuna gönderildi.
|
messaging/message-rate-exceeded |
Belirli bir hedefe gönderilen iletilerin oranı çok yüksek. Bu cihaza veya konuya gönderilen mesaj sayısını azaltın ve bu hedefe göndermeyi hemen yeniden denemeyin. |
messaging/device-message-rate-exceeded |
Belirli bir cihaza gönderilen ileti sayısı çok yüksek. Bu cihaza gönderilen mesaj sayısını azaltın ve bu cihaza göndermeyi hemen yeniden denemeyin. |
messaging/topics-message-rate-exceeded |
Belirli bir konuya abone olan kullanıcılara gönderilen mesajların oranı çok yüksek. İlgili konu için gönderilen mesaj sayısını azaltın ve bu konuya göndermeyi hemen yeniden denemeyin. |
messaging/too-many-topics |
Bir kayıt jetonu, maksimum sayıda konuya abone oldu ve artık başka konuya abone olamaz. |
messaging/invalid-apns-credentials |
Gerekli APNs SSL sertifikası yüklenmediği veya süresi dolduğu için bir Apple cihazına yönelik mesaj gönderilemedi. Geliştirme ve üretim sertifikalarınızın geçerliliğini kontrol edin. |
messaging/mismatched-credential |
Bu SDK'nın kimliğini doğrulamak için kullanılan kimlik bilgisinin, sağlanan kayıt jetonuna karşılık gelen cihaza mesaj gönderme izni yok. Kimlik bilgisinin ve kayıt jetonunun aynı Firebase projesine ait olduğundan emin olun. Firebase Admin SDK kimliğini doğrulama hakkında dokümanlar için Firebase'i uygulamanıza ekleme başlıklı makaleyi inceleyin. |
messaging/authentication-error |
SDK, FCM sunucularında kimlik doğrulaması yapamadı. Firebase Admin SDK kimliğini, FCM mesajları göndermek için uygun izinlere sahip bir kimlik bilgisiyle doğruladığınızdan emin olun. Firebase Admin SDK kimliğini doğrulama hakkında dokümanlar için Firebase'i uygulamanıza ekleme başlıklı makaleyi inceleyin. |
messaging/server-unavailable |
FCM sunucusu, isteği zamanında işleyemedi. Aynı isteği tekrar denemelisiniz ancak şunları yapmanız gerekir:
|
messaging/internal-error |
FCM sunucusu, isteği işlemeye çalışırken bir hatayla karşılaştı. Aynı isteği, önceki messaging/server-unavailable satırında belirtilen koşulları karşılayacak şekilde yeniden gönderebilirsiniz. Hata devam ederse lütfen sorunu Hata Bildirimi destek kanalımıza bildirin.
|
messaging/unknown-error |
Bilinmeyen bir sunucu hatası döndürüldü. Daha fazla bilgi için hata mesajındaki ham sunucu yanıtına bakın. Bu hatayı alırsanız lütfen hata mesajının tamamını Hata Raporu destek kanalımıza bildirin. |