गड़बड़ियां ठीक करना

Gmail API, गड़बड़ी की जानकारी दो लेवल पर दिखाता है:

  • हेडर में एचटीटीपी गड़बड़ी के कोड और मैसेज.
  • जवाब के मुख्य हिस्से में मौजूद JSON ऑब्जेक्ट में, गड़बड़ी के बारे में ज़्यादा जानकारी होती है. इससे आपको यह तय करने में मदद मिलती है कि गड़बड़ी को कैसे ठीक किया जाए.

Gmail ऐप्लिकेशन को ऐसी सभी गड़बड़ियों का पता लगाना चाहिए और उन्हें ठीक करना चाहिए जो REST API का इस्तेमाल करते समय हो सकती हैं. इस गाइड में, एपीआई से जुड़ी कुछ गड़बड़ियों को ठीक करने के निर्देश दिए गए हैं.

गड़बड़ी 400: खराब अनुरोध को ठीक करना

यह गड़बड़ी, आपके कोड में मौजूद इन गड़बड़ियों की वजह से हो सकती है:

  • कोई ज़रूरी फ़ील्ड या पैरामीटर नहीं दिया गया है.
  • दी गई वैल्यू या फ़ील्ड का कॉम्बिनेशन अमान्य है.
  • अटैचमेंट अमान्य है.

इस गड़बड़ी को JSON के तौर पर यहां दिखाया गया है:

{
  "error": {
    "code": 400,
    "errors": [
      {
        "domain": "global",
        "location": "orderBy",
        "locationType": "parameter",
        "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order.",
        "reason": "badRequest"
      }
    ],
    "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order."
  }
}

इस गड़बड़ी को ठीक करने के लिए, message फ़ील्ड देखें और अपने कोड में ज़रूरी बदलाव करें.

401 गड़बड़ी ठीक करना: अमान्य क्रेडेंशियल

401 गड़बड़ी का मतलब है कि इस्तेमाल किया जा रहा ऐक्सेस टोकन अमान्य है या उसे इस्तेमाल करने का समय खत्म हो गया है. यह गड़बड़ी, अनुरोध किए गए स्कोप के लिए अनुमति न होने की वजह से भी हो सकती है. इस गड़बड़ी को JSON फ़ॉर्मैट में यहां दिखाया गया है:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "Invalid Credentials",
        "locationType": "header",
        "location": "Authorization",
      }
    ],
    "code": 401,
    "message": "Invalid Credentials"
  }
}

इस गड़बड़ी को ठीक करने के लिए, लंबे समय तक इस्तेमाल किए जा सकने वाले रीफ़्रेश टोकन का इस्तेमाल करके, ऐक्सेस टोकन को रीफ़्रेश करें. क्लाइंट लाइब्रेरी का इस्तेमाल करने पर, टोकन रीफ़्रेश करने की प्रोसेस अपने-आप मैनेज हो जाती है. अगर ऐसा नहीं होता है, तो उपयोगकर्ता को OAuth फ़्लो के ज़रिए रीडायरेक्ट करें. इसके बारे में Gmail के साथ अपने ऐप्लिकेशन को अनुमति देना लेख में बताया गया है.

Gmail की सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल करने की सीमाएं लेख पढ़ें.

403 गड़बड़ी ठीक करना: इस्तेमाल की सीमा पार हो गई है

इस्तेमाल की सीमा पार हो जाने या उपयोगकर्ता के पास सही अनुमतियां न होने पर, गड़बड़ी 403 होती है. गड़बड़ी के टाइप का पता लगाने के लिए, दिखाए गए JSON के reason फ़ील्ड का आकलन करें. यह गड़बड़ी इन स्थितियों में होती है:

  • रोज़ की सीमा पार हो गई है.
  • उपयोगकर्ता की दर सीमा से ज़्यादा हो गई है.
  • प्रोजेक्ट के लिए तय की गई अनुरोधों की संख्या की सीमा पार हो गई है.
  • आपके ऐप्लिकेशन का इस्तेमाल, पुष्टि किए गए उपयोगकर्ता के डोमेन में नहीं किया जा सकता.

Gmail की सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल करने की सीमाएं लेख पढ़ें.

403 गड़बड़ी ठीक करना: रोज़ाना की सीमा पार हो गई है

dailyLimitExceeded गड़बड़ी का मतलब है कि आपके प्रोजेक्ट के लिए, एपीआई के इस्तेमाल की तय सीमा पूरी हो गई है. इस गड़बड़ी को JSON फ़ॉर्मैट में यहां दिखाया गया है:

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "dailyLimitExceeded",
        "message": "Daily Limit Exceeded"
      }
    ],
    "code": 403,
    "message": "Daily Limit Exceeded"
  }
}

इस गड़बड़ी को ठीक करने के लिए:

  1. Google API Console पर जाएं
  2. अपना प्रोजेक्ट चुनें.
  3. कोटा टैब पर क्लिक करें
  4. अतिरिक्त कोटा का अनुरोध करें. ज़्यादा जानकारी के लिए, अतिरिक्त कोटा का अनुरोध करना लेख पढ़ें.

Gmail की सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल करने की सीमाएं लेख पढ़ें.

403 गड़बड़ी ठीक करना: उपयोगकर्ता की दर सीमा पार हो गई है

userRateLimitExceeded गड़बड़ी का मतलब है कि किसी उपयोगकर्ता के लिए तय की गई सीमा पूरी हो गई है. इस गड़बड़ी को JSON फ़ॉर्मैट में यहां दिखाया गया है:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceeded",
    "message": "User Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded"
 }
}

इस गड़बड़ी को ठीक करने के लिए, अपने ऐप्लिकेशन कोड को ऑप्टिमाइज़ करें, ताकि कम अनुरोध किए जा सकें या अनुरोधों को फिर से आज़माया जा सके. अनुरोधों को फिर से करने के बारे में जानकारी पाने के लिए, गड़बड़ियों को ठीक करने के लिए, पूरे न हो पाने वाले अनुरोधों को फिर से करना लेख पढ़ें.

Gmail की सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल करने की सीमाएं लेख पढ़ें.

403 गड़बड़ी ठीक करना: रेट की सीमा पार हो गई

rateLimitExceeded गड़बड़ी से पता चलता है कि उपयोगकर्ता ने Gmail API के लिए अनुरोध करने की ज़्यादा से ज़्यादा सीमा पार कर ली है. अनुरोधों के टाइप के हिसाब से, यह सीमा अलग-अलग होती है. इस गड़बड़ी को JSON फ़ॉर्मैट में यहां दिखाया गया है:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Rate Limit Exceeded",
    "reason": "rateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

इस गड़बड़ी को ठीक करने के लिए, अनुरोध फिर से भेजें.

Gmail की सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल करने की सीमाएं लेख पढ़ें.

403 गड़बड़ी ठीक करना: {appId} आईडी वाले ऐप्लिकेशन का इस्तेमाल, पुष्टि किए गए उपयोगकर्ता के डोमेन में नहीं किया जा सकता

domainPolicy गड़बड़ी तब होती है, जब उपयोगकर्ता के डोमेन के लिए बनी नीति के तहत, आपके ऐप्लिकेशन को Gmail ऐक्सेस करने की अनुमति नहीं होती. इस गड़बड़ी का JSON फ़ॉर्मैट यहां दिया गया है:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "domainPolicy",
        "message": "The domain administrators have disabled Gmail apps."
      }
    ],
    "code": 403,
    "message": "The domain administrators have disabled Gmail apps."
  }
}

इस गड़बड़ी को ठीक करने के लिए:

  1. उपयोगकर्ता को बताएं कि डोमेन, आपके ऐप्लिकेशन को Gmail ऐक्सेस करने की अनुमति नहीं देता है.
  2. उपयोगकर्ता को निर्देश दें कि वह आपके ऐप्लिकेशन के लिए ऐक्सेस का अनुरोध करने के लिए, डोमेन एडमिन से संपर्क करे.

429 गड़बड़ी ठीक करना: बहुत ज़्यादा अनुरोध किए गए

हर उपयोगकर्ता के लिए तय की गई रोज़ाना की सीमा (इसमें ईमेल भेजने की सीमाएं भी शामिल हैं), बैंडविड्थ की सीमाएं या हर उपयोगकर्ता के लिए एक साथ किए जाने वाले अनुरोध की सीमा की वजह से, 429 "बहुत ज़्यादा अनुरोध" वाली गड़बड़ी हो सकती है. हर सीमा के बारे में यहां जानकारी दी गई है. हालांकि, हर सीमा को इन तरीकों से हल किया जा सकता है: अनुरोध फिर से भेजें या कई Gmail खातों में प्रोसेसिंग को बांटें. हर उपयोगकर्ता के लिए तय की गई सीमा को किसी भी वजह से नहीं बढ़ाया जा सकता. सीमाओं के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल की सीमाएं देखें.

ईमेल भेजने की सीमाएं

Gmail API, ईमेल भेजने की रोज़ की स्टैंडर्ड सीमाओं को लागू करता है. Google Workspace के लिए पैसे चुकाकर सदस्यता लेने वाले उपयोगकर्ताओं और gmail.com खाते से मुफ़्त में आज़माने की सुविधा का इस्तेमाल करने वाले उपयोगकर्ताओं के लिए, ये सीमाएं अलग-अलग होती हैं. इन सीमाओं के बारे में जानने के लिए, Google Workspace में Gmail से ईमेल भेजने की सीमाएं लेख पढ़ें.

ये सीमाएं हर उपयोगकर्ता के लिए होती हैं. इन्हें उपयोगकर्ता के सभी क्लाइंट शेयर करते हैं. ये क्लाइंट, एपीआई क्लाइंट, नेटिव/वेब क्लाइंट या SMTP MSA हो सकते हैं. अगर इन सीमाओं का उल्लंघन किया जाता है, तो एचटीटीपी 429 Too Many Requests "User-rate limit exceeded" "(Mail sending)" गड़बड़ी का मैसेज दिखता है. इसमें फिर से कोशिश करने का समय भी बताया जाता है. ध्यान दें कि एक दिन में तय सीमा से ज़्यादा अनुरोध भेजने पर, अनुरोध स्वीकार होने से पहले कई घंटों तक इस तरह की गड़बड़ियां हो सकती हैं.

ईमेल भेजने की प्रोसेस काफ़ी जटिल होती है: जब कोई उपयोगकर्ता अपने कोटे से ज़्यादा ईमेल भेज देता है, तो एपीआई को 429 गड़बड़ी वाले जवाब भेजने में कई मिनट लग सकते हैं. इसलिए, यह नहीं माना जा सकता कि 200 रिस्पॉन्स का मतलब है कि ईमेल सफलतापूर्वक भेजा गया है.

बैंडविड्थ की सीमाएं

इस एपीआई में, हर उपयोगकर्ता के लिए अपलोड और डाउनलोड करने की बैंडविड्थ की सीमाएं होती हैं. ये सीमाएं, IMAP के बराबर होती हैं, लेकिन इससे अलग होती हैं. ये सीमाएं, किसी उपयोगकर्ता के लिए सभी Gmail API क्लाइंट के साथ शेयर की जाती हैं.

आम तौर पर, इन सीमाओं का उल्लंघन सिर्फ़ कुछ खास मामलों में या गलत इस्तेमाल की वजह से होता है. इन सीमाओं के पार होने पर, एचटीटीपी 429 Too Many Requests "User-rate limit exceeded" गड़बड़ी का मैसेज दिखता है. साथ ही, अनुरोध को फिर से भेजने का समय भी बताया जाता है. ध्यान दें कि रोज़ाना की सीमाएं पार होने पर, अनुरोध स्वीकार होने से पहले कई घंटों तक इस तरह की गड़बड़ियां हो सकती हैं.

एक साथ किए गए अनुरोध

Gmail API, हर उपयोगकर्ता के लिए एक साथ किए जाने वाले अनुरोधों की सीमा लागू करता है. यह सीमा, हर उपयोगकर्ता के लिए दर की सीमा के अलावा होती है. यह सीमा, किसी उपयोगकर्ता के डेटा को ऐक्सेस करने वाले सभी Gmail API क्लाइंट के लिए होती है. इससे यह पक्का किया जाता है कि कोई भी API क्लाइंट, Gmail उपयोगकर्ता के मेलबॉक्स या उनके बैकएंड सर्वर पर ज़्यादा लोड न डाले.

किसी एक उपयोगकर्ता के लिए एक साथ कई अनुरोध करने या बड़ी संख्या में अनुरोधों वाले बैच भेजने पर, यह गड़बड़ी दिख सकती है. अगर कई एपीआई क्लाइंट एक साथ Gmail उपयोगकर्ता के मेलबॉक्स को ऐक्सेस करते हैं, तो भी यह गड़बड़ी दिख सकती है. अगर यह सीमा पार हो जाती है, तो एचटीटीपी 429 Too Many Requests "उपयोगकर्ता के लिए एक साथ कई अनुरोध किए गए" गड़बड़ी का मैसेज दिखता है.

500 गड़बड़ी ठीक करना: बैकएंड में गड़बड़ी

अनुरोध को प्रोसेस करते समय अचानक कोई गड़बड़ी होने पर, backendError दिखता है.

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error",
   }
  ],
  "code": 500,
  "message": "Backend Error"
 }
}

इस गड़बड़ी को ठीक करने के लिए, अनुरोध फिर से भेजें. यहां 500 गड़बड़ियों की सूची दी गई है:

  • 502 खराब गेटवे
  • 503 कोड वाली गड़बड़ी: सेवा उपलब्ध नहीं है
  • 504: गेटवे का समय खत्म हो गया है

गड़बड़ियों को ठीक करने के लिए, पूरे न हो पाने वाले अनुरोधों को फिर से भेजें

रेट लिमिट, नेटवर्क वॉल्यूम या जवाब देने में लगने वाले समय से जुड़ी गड़बड़ियों को ठीक करने के लिए, समय-समय पर अनुरोध को फिर से भेजा जा सकता है. इसके लिए, समयसीमा को बढ़ाया जा सकता है. उदाहरण के लिए, हो सकता है कि आप किसी अनुरोध के पूरा न होने पर, एक सेकंड बाद फिर से कोशिश करें. इसके बाद, दो सेकंड बाद और फिर चार सेकंड बाद कोशिश करें. इस तरीके को एक्सपोनेंशियल बैकऑफ़ कहा जाता है. इसका इस्तेमाल, बैंडविड्थ के इस्तेमाल को बेहतर बनाने और एक साथ कई अनुरोधों को प्रोसेस करने वाले एनवायरमेंट में, अनुरोधों की थ्रूपुट को ज़्यादा से ज़्यादा करने के लिए किया जाता है.

गड़बड़ी होने के कम से कम एक सेकंड बाद, फिर से कोशिश करने की अवधि शुरू करें.

इस्तेमाल करने की सीमाएं देखना या उनमें बदलाव करना, कोटा बढ़ाना

अपने प्रोजेक्ट के लिए इस्तेमाल की सीमाएं देखने या उनमें बदलाव करने के लिए, यह तरीका अपनाएं. इसके अलावा, कोटा बढ़ाने का अनुरोध करने के लिए भी यह तरीका अपनाएं:

  1. अगर आपके प्रोजेक्ट के लिए पहले से कोई बिलिंग खाता नहीं है, तो एक खाता बनाएं.
  2. एपीआई कंसोल में, एपीआई लाइब्रेरी के 'चालू किए गए एपीआई' पेज पर जाएं और सूची में से कोई एपीआई चुनें.
  3. कोटे से जुड़ी सेटिंग देखने और बदलने के लिए, कोटे को चुनें. इस्तेमाल के आंकड़े देखने के लिए, इस्तेमाल को चुनें.

एक साथ ग्रुप या बैच में भेजे गए अनुरोध

बैचिंग का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, बैच का साइज़ बड़ा होने पर, दर सीमित करने की सुविधा चालू हो सकती है. हमारा सुझाव है कि 50 से ज़्यादा अनुरोधों वाले बैच न भेजें. अनुरोधों को बैच में भेजने के तरीके के बारे में जानकारी पाने के लिए, अनुरोधों को बैच में भेजना लेख पढ़ें.