एचटीटीपी v1 API के लिए, गड़बड़ी के REST कोड
एचटीटीपी v1 एपीआई के लिए, गड़बड़ी के एचटीटीपी रिस्पॉन्स में गड़बड़ी का कोड, गड़बड़ी का मैसेज, और गड़बड़ी की स्थिति शामिल होती है. इनमें गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला details
कलेक्शन भी शामिल हो सकता है.
गड़बड़ी के जवाब के दो सैंपल यहां दिए गए हैं:
पहला उदाहरण: एचटीटीपी v1 एपीआई अनुरोध से गड़बड़ी का रिस्पॉन्स, जिसमें डेटा मैसेज में अमान्य वैल्यू है
{
"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"
}
]
}
]
}
}
दूसरा उदाहरण: अमान्य रजिस्ट्रेशन टोकन वाले एचटीटीपी v1 एपीआई अनुरोध से मिला गड़बड़ी का रिस्पॉन्स
{
"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"
}
]
}
}
ध्यान दें कि दोनों मैसेज का कोड और स्टेटस एक जैसा है, लेकिन जानकारी वाले कलेक्शन में अलग-अलग तरह की वैल्यू शामिल हैं. पहले उदाहरण में टाइप type.googleapis.com/google.rpc.BadRequest
है, जो अनुरोध की वैल्यू में गड़बड़ी का संकेत देता है. टाइप type.googleapis.com/google.firebase.fcm.v1.FcmError
वाले दूसरे उदाहरण में, FCM से जुड़ी गड़बड़ी है.
कई गड़बड़ियों के लिए, ज़्यादा जानकारी वाले कलेक्शन में वह जानकारी होती है जिसकी ज़रूरत आपको डीबग करने और समस्या हल करने के लिए होती है.
इस टेबल में, FCM v1 REST API के गड़बड़ी कोड और उनके ब्यौरे दिए गए हैं.
त्रुटि कोड | समस्या की जानकारी और उसे ठीक करने का तरीका |
---|---|
UNSPECIFIED_ERROR इस गड़बड़ी के बारे में कोई और जानकारी उपलब्ध नहीं है. |
कोई नहीं. |
INVALID_ARGUMENT (एचटीटीपी गड़बड़ी कोड = 400) अनुरोध पैरामीटर अमान्य थे. कौनसा फ़ील्ड अमान्य है, यह बताने के लिए google.rpc.BadRequest टाइप का एक्सटेंशन दिखाया जाता है. |
इसकी संभावित वजहें ये हो सकती हैं: अमान्य रजिस्ट्रेशन, पैकेज का नाम अमान्य है, मैसेज बहुत बड़ा है, डेटा कुंजी अमान्य है, टीटीएल (TTL) अमान्य है या अन्य अमान्य पैरामीटर. रजिस्ट्रेशन अमान्य है: सर्वर को भेजे गए रजिस्ट्रेशन टोकन का फ़ॉर्मैट देखें. पक्का करें कि यह उस रजिस्ट्रेशन टोकन से मेल खाता हो जो क्लाइंट ऐप्लिकेशन को FCM के साथ रजिस्टर करने पर मिलता है. टोकन को छोटा न करें या उसमें अतिरिक्त वर्ण न जोड़ें. पैकेज का नाम अमान्य है: पक्का करें कि मैसेज, उस रजिस्ट्रेशन टोकन को भेजा गया हो जिसका पैकेज का नाम, अनुरोध में दी गई वैल्यू से मेल खाता हो. मैसेज का साइज़ बहुत ज़्यादा है: देखें कि मैसेज में शामिल पेलोड डेटा का कुल साइज़, FCM की तय सीमा से ज़्यादा न हो: ज़्यादातर मैसेज के लिए 4,096 बाइट या विषयों के लिए मैसेज के मामले में 2,048 बाइट. इसमें कुंजियां और वैल्यू, दोनों शामिल होती हैं. अमान्य डेटा कुंजी: पक्का करें कि पेलोड डेटा में कोई ऐसी कुंजी (जैसे, from, gcm या google से शुरू होने वाली कोई वैल्यू) शामिल न हो जिसका इस्तेमाल FCM अंदरूनी तौर पर करता है. ध्यान दें कि FCM में भी कुछ शब्दों (जैसे, collapse_key) का इस्तेमाल किया जाता है. हालांकि, इन्हें पेलोड में इस्तेमाल करने की अनुमति है. ऐसे में, पेलोड की वैल्यू को FCM की वैल्यू से बदल दिया जाएगा. अमान्य टीटीएल: पक्का करें कि ttl में इस्तेमाल की गई वैल्यू, सेकंड में कुल समय को दिखाने वाली कोई पूर्णांक हो. यह समय 0 से 2,419,200 (चार हफ़्ते) के बीच होना चाहिए. अमान्य पैरामीटर: देखें कि दिए गए पैरामीटर का नाम और टाइप सही है या नहीं. |
UNREGISTERED (एचटीटीपी गड़बड़ी कोड = 404) ऐप्लिकेशन इंस्टेंस को FCM से अनरजिस्टर कर दिया गया था. आम तौर पर, इसका मतलब है कि इस्तेमाल किया गया टोकन अब मान्य नहीं है और इसका इस्तेमाल नहीं किया जा सकता. |
यह गड़बड़ी, रजिस्ट्रेशन टोकन मौजूद न होने या रजिस्ट्रेशन नहीं किए गए टोकन की वजह से हो सकती है. रजिस्ट्रेशन मौजूद नहीं है: अगर मैसेज का टारगेट token वैल्यू है, तो देखें कि अनुरोध में रजिस्ट्रेशन टोकन शामिल है या नहीं.रजिस्टर नहीं किया गया: कई मामलों में, मौजूदा रजिस्ट्रेशन टोकन अमान्य हो सकता है. जैसे: - अगर क्लाइंट ऐप्लिकेशन, FCM के साथ अनरजिस्टर हो जाता है. - अगर क्लाइंट ऐप्लिकेशन अपने-आप अनरजिस्टर हो जाता है. ऐसा तब हो सकता है, जब उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल कर दे. उदाहरण के लिए, iOS पर, अगर APNs फ़ीडबैक सेवा ने APNs टोकन को अमान्य बताया है. - अगर रजिस्टर करने के लिए इस्तेमाल किए जाने वाले टोकन की समयसीमा खत्म हो जाती है. उदाहरण के लिए, Google रजिस्टर करने के लिए इस्तेमाल किए जाने वाले टोकन को रीफ़्रेश कर सकता है या iOS डिवाइसों के लिए APNs टोकन की समयसीमा खत्म हो सकती है. - अगर क्लाइंट ऐप्लिकेशन अपडेट हो गया है, लेकिन नया वर्शन मैसेज पाने के लिए कॉन्फ़िगर नहीं किया गया है. इन सभी मामलों में, ऐप्लिकेशन सर्वर से इस रजिस्ट्रेशन टोकन को हटा दें और मैसेज भेजने के लिए इसका इस्तेमाल बंद कर दें. |
SENDER_ID_MISMATCH (एचटीटीपी गड़बड़ी कोड = 403) पुष्टि किया गया ईमेल पता, रजिस्ट्रेशन टोकन के लिए ईमेल पते से अलग है. |
रजिस्ट्रेशन टोकन, ईमेल भेजने वाले लोगों के किसी खास ग्रुप से जुड़ा होता है. जब कोई क्लाइंट ऐप्लिकेशन, FCM के लिए रजिस्टर करता है, तो उसे यह बताना होगा कि किन लोगों को मैसेज भेजने की अनुमति है. क्लाइंट ऐप्लिकेशन पर मैसेज भेजते समय, आपको इनमें से किसी एक ईमेल पते का इस्तेमाल करना चाहिए. किसी दूसरे ईमेल पते का इस्तेमाल करने पर, मौजूदा रजिस्ट्रेशन टोकन काम नहीं करेंगे. |
QUOTA_EXCEEDED (एचटीटीपी गड़बड़ी कोड = 429) मैसेज टारगेट के लिए, भेजने की सीमा पार हो गई है. किस कोटा को पार किया गया है, यह बताने के लिए google.rpc.QuotaFailure टाइप का एक्सटेंशन दिखाया जाता है. |
यह गड़बड़ी, मैसेज भेजने की दर का कोटा पार होने, डिवाइस के लिए मैसेज भेजने की दर का कोटा पार होने या विषय के लिए मैसेज भेजने की दर का कोटा पार होने की वजह से हो सकती है. मैसेज भेजने की दर ज़्यादा है: मैसेज भेजने की दर बहुत ज़्यादा है. आपको मैसेज भेजने की कुल दर कम करनी होगी. अस्वीकार किए गए मैसेज को फिर से भेजने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, शुरुआती देरी कम से कम एक मिनट होनी चाहिए. डिवाइस पर मैसेज भेजने की दर ज़्यादा है: किसी डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है. किसी एक डिवाइस पर मैसेज भेजने की दर की सीमा देखें. इस डिवाइस पर भेजे जाने वाले मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें. किसी विषय के लिए मैसेज भेजने की दर तय सीमा से ज़्यादा है: किसी विषय के लिए सदस्यों को भेजे जाने वाले मैसेज की दर बहुत ज़्यादा है. इस विषय के लिए भेजे गए मैसेज की संख्या कम करें. साथ ही, मैसेज भेजने की कोशिश फिर से करने के लिए, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसमें, शुरुआती देरी कम से कम एक मिनट की होनी चाहिए. |
UNAVAILABLE (एचटीटीपी गड़बड़ी कोड = 503) सर्वर पर ज़्यादा अनुरोध हैं. |
सर्वर, अनुरोध को समय पर प्रोसेस नहीं कर सका. उसी अनुरोध को फिर से भेजें. हालांकि, आपको ये काम करने होंगे: - अगर FCM कनेक्शन सर्वर के रिस्पॉन्स में 'फिर से कोशिश करें' हेडर शामिल है, तो उसे लागू करें. - फिर से कोशिश करने की सुविधा में एक्सपोनेंशियल बैकऑफ़ लागू करें. उदाहरण के लिए, अगर आपने पहली बार फिर से कोशिश करने से पहले एक सेकंड इंतज़ार किया है, तो अगली बार कम से कम दो सेकंड इंतज़ार करें. इसके बाद, चार सेकंड और इसी तरह इंतज़ार करें. अगर एक से ज़्यादा मैसेज भेजे जा रहे हैं, तो जटरिंग लागू करें. ज़्यादा जानकारी के लिए, फिर से कोशिश करने की सुविधा को मैनेज करनादेखें. इसके अलावा, FCM का स्टेटस डैशबोर्ड देखकर यह पता लगाया जा सकता है कि क्या सेवा में कोई रुकावट आ रही है, जिससे FCM पर असर पड़ रहा है. ईमेल भेजने वाले जिन लोगों या कंपनियों की वजह से समस्याएं आती हैं उन्हें ब्लैकलिस्ट किया जा सकता है. |
INTERNAL (एचटीटीपी गड़बड़ी कोड = 500) कोई अनजान अंदरूनी गड़बड़ी हुई. |
अनुरोध को प्रोसेस करते समय सर्वर में गड़बड़ी हुई. फिर से कोशिश करने से जुड़ी समस्या हल करना में दिए गए सुझावों का पालन करके, उसी अनुरोध को फिर से भेजा जा सकता है या FCM स्टेटस डैशबोर्ड देखकर ऐसा किया जा सकता है. पर जाएं. इससे आपको पता चलेगा कि क्या सेवा में कोई रुकावट आ रही है, जिसका असर FCM पर पड़ रहा है. अगर गड़बड़ी बनी रहती है, तो कृपया Firebase की सहायता टीम से संपर्क करें. |
THIRD_PARTY_AUTH_ERROR (एचटीटीपी गड़बड़ी कोड = 401) APNs सर्टिफ़िकेट या वेब पुश की पुष्टि करने वाली कुंजी अमान्य थी या मौजूद नहीं थी. |
iOS डिवाइस या वेब पर पुश नोटिफ़िकेशन के ज़रिए रजिस्टर करने वाले लोगों को टारगेट किया गया मैसेज नहीं भेजा जा सका. देखें कि आपके डेवलपमेंट और प्रोडक्शन क्रेडेंशियल मान्य हैं या नहीं. |
Admin SDK से जुड़ी गड़बड़ी के कोड
यहां दी गई टेबल में, Firebase Admin FCM API के गड़बड़ी कोड और उनके बारे में जानकारी दी गई है. साथ ही, समस्या को हल करने के लिए सुझाए गए तरीके भी दिए गए हैं.
त्रुटि कोड | समस्या की जानकारी और उसे ठीक करने का तरीका |
---|---|
messaging/invalid-argument |
FCM तरीके के लिए अमान्य आर्ग्युमेंट दिया गया था. गड़बड़ी के मैसेज में ज़्यादा जानकारी होनी चाहिए. |
messaging/invalid-recipient |
मैसेज पाने वाले व्यक्ति का ईमेल पता अमान्य है. गड़बड़ी के मैसेज में, अतिरिक्त जानकारी होनी चाहिए. |
messaging/invalid-payload |
मैसेज का अमान्य पेलोड ऑब्जेक्ट दिया गया था. गड़बड़ी के मैसेज में, अतिरिक्त जानकारी होनी चाहिए. |
messaging/invalid-data-payload-key |
डेटा मैसेज पेलोड में अमान्य कुंजी है. पाबंदी वाली पासकोड के लिए,
DataMessagePayload के रेफ़रंस दस्तावेज़ देखें.
|
messaging/payload-size-limit-exceeded |
मैसेज का दिया गया पेलोड, FCM की साइज़ की सीमा से ज़्यादा है. ज़्यादातर मैसेज के लिए, साइज़ की सीमा 4,096 बाइट होती है. विषयों पर भेजे जाने वाले मैसेज के लिए, 2048 बाइट की सीमा होती है. पेलोड के कुल साइज़ में, कुंजियां और वैल्यू, दोनों शामिल होती हैं. |
messaging/invalid-options |
मैसेज के विकल्पों का अमान्य ऑब्जेक्ट दिया गया था. गड़बड़ी के मैसेज में, अतिरिक्त जानकारी होनी चाहिए. |
messaging/invalid-registration-token |
रजिस्ट्रेशन के लिए दिया गया टोकन अमान्य है. पक्का करें कि यह FCM के साथ रजिस्टर करने पर, क्लाइंट ऐप्लिकेशन को मिले रजिस्ट्रेशन टोकन से मेल खाता हो. इसमें कुछ भी न जोड़ें और न ही कुछ काटें. |
messaging/registration-token-not-registered |
दिया गया रजिस्ट्रेशन टोकन रजिस्टर नहीं है. पहले मान्य रहा रजिस्ट्रेशन टोकन, कई वजहों से रजिस्ट्रेशन से हटाया जा सकता है. इनमें ये वजहें शामिल हैं:
|
messaging/invalid-package-name |
मैसेज, ऐसे रजिस्ट्रेशन टोकन के लिए था जिसका पैकेज का नाम, दिए गए
restrictedPackageName विकल्प से मेल नहीं खाता.
|
messaging/message-rate-exceeded |
किसी खास टारगेट को भेजे गए मैसेज की दर बहुत ज़्यादा है. इस डिवाइस या विषय पर भेजे जाने वाले मैसेज की संख्या कम करें और इस टारगेट पर तुरंत मैसेज भेजने की कोशिश न करें. |
messaging/device-message-rate-exceeded |
किसी डिवाइस पर मैसेज भेजने की दर बहुत ज़्यादा है. इस डिवाइस पर भेजे जाने वाले मैसेज की संख्या कम करें और तुरंत इस डिवाइस पर मैसेज भेजने की कोशिश न करें. |
messaging/topics-message-rate-exceeded |
किसी खास विषय के लिए सदस्यों को भेजे जाने वाले मैसेज की दर बहुत ज़्यादा है. उस विषय के लिए भेजे गए मैसेज की संख्या कम करें और तुरंत उस विषय पर मैसेज भेजने की कोशिश न करें. |
messaging/too-many-topics |
रजिस्टर करने के लिए इस्तेमाल किए गए टोकन की मदद से, ज़्यादा से ज़्यादा विषयों की सदस्यता ली जा सकती है. इसके बाद, किसी और विषय की सदस्यता नहीं ली जा सकती. |
messaging/invalid-apns-credentials |
Apple डिवाइस को टारगेट किया गया मैसेज नहीं भेजा जा सका, क्योंकि ज़रूरी APNs एसएसएल सर्टिफ़िकेट अपलोड नहीं किया गया था या उसकी समयसीमा खत्म हो गई है. देखें कि आपके डेवलपमेंट और प्रोडक्शन सर्टिफ़िकेट की समयसीमा खत्म तो नहीं हो गई है. |
messaging/mismatched-credential |
इस SDK की पुष्टि करने के लिए इस्तेमाल किए गए क्रेडेंशियल के पास, दिए गए रजिस्ट्रेशन टोकन से जुड़े डिवाइस पर मैसेज भेजने की अनुमति नहीं है. पक्का करें कि क्रेडेंशियल और रजिस्ट्रेशन टोकन, दोनों एक ही Firebase प्रोजेक्ट से जुड़े हों. Firebase Admin SDK की पुष्टि करने का तरीका जानने के लिए, अपने ऐप्लिकेशन में Firebase जोड़ें लेख पढ़ें. |
messaging/authentication-error |
SDK टूल, FCM सर्वर की पुष्टि नहीं कर सका. पक्का करें कि आपने Firebase Admin SDK की पुष्टि, ऐसे क्रेडेंशियल से की हो जिसके पास FCM मैसेज भेजने की अनुमतियां हों. Firebase Admin SDK की पुष्टि करने का तरीका जानने के लिए, अपने ऐप्लिकेशन में Firebase जोड़ें लेख पढ़ें. |
messaging/server-unavailable |
FCM सर्वर, अनुरोध को समय पर प्रोसेस नहीं कर सका. आपको
उसी अनुरोध को फिर से भेजना चाहिए. हालांकि, इसके लिए आपको ये काम करने होंगे:
|
messaging/internal-error |
FCM सर्वर को अनुरोध को प्रोसेस करते समय कोई गड़बड़ी हुई. आपके पास उसी अनुरोध को फिर से कोशिश करने का विकल्प है. इसके लिए, आपको ऊपर दी गई messaging/server-unavailable पंक्ति में बताई गई ज़रूरी शर्तों को पूरा करना होगा. अगर गड़बड़ी बनी रहती है, तो कृपया गड़बड़ी की शिकायत करने के लिए बने हमारे सहायता चैनल पर समस्या की शिकायत करें.
|
messaging/unknown-error |
सर्वर में कोई ऐसी गड़बड़ी हुई जिसके बारे में जानकारी नहीं है. ज़्यादा जानकारी के लिए, गड़बड़ी के मैसेज में, सर्वर का रॉ रिस्पॉन्स देखें. अगर आपको गड़बड़ी का यह मैसेज मिलता है, तो कृपया गड़बड़ी की शिकायत वाले हमारे सहायता चैनल पर, गड़बड़ी का पूरा मैसेज बताएं. |