API ত্রুটিগুলি পরিচালনা করুন৷

ক্যালেন্ডার API ত্রুটির তথ্যের দুটি স্তর প্রদান করে:

  • হেডারে HTTP ত্রুটি কোড এবং বার্তা
  • অতিরিক্ত বিবরণ সহ প্রতিক্রিয়া বডিতে একটি JSON অবজেক্ট যা আপনাকে কীভাবে ত্রুটিটি পরিচালনা করতে হবে তা নির্ধারণ করতে সহায়তা করতে পারে।

এই পৃষ্ঠার বাকি অংশটি ক্যালেন্ডার ত্রুটিগুলির একটি রেফারেন্স প্রদান করে, আপনার অ্যাপে সেগুলি কীভাবে পরিচালনা করবেন তার কিছু নির্দেশিকা সহ।

সূচকীয় ব্যাকঅফ প্রয়োগ করুন

ক্লাউড এপিআই ডকুমেন্টেশনে এক্সপোনেনশিয়াল ব্যাকঅফের একটি ভাল ব্যাখ্যা রয়েছে এবং কীভাবে এটি Google API-এর সাথে ব্যবহার করতে হয়।

ত্রুটি এবং প্রস্তাবিত কর্ম

এই বিভাগটি তালিকাভুক্ত প্রতিটি ত্রুটির সম্পূর্ণ JSON উপস্থাপনা প্রদান করে এবং এটি পরিচালনা করার জন্য আপনি যে পদক্ষেপ নিতে পারেন তা প্রস্তাবিত।

400 খারাপ অনুরোধ

ব্যবহারকারীর ত্রুটি। এর অর্থ হতে পারে যে একটি প্রয়োজনীয় ক্ষেত্র বা প্যারামিটার সরবরাহ করা হয়নি, সরবরাহ করা মানটি অবৈধ, বা প্রদত্ত ক্ষেত্রগুলির সংমিশ্রণটি অবৈধ।

{
 "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."
 }
}

প্রস্তাবিত পদক্ষেপ: কারণ এটি একটি স্থায়ী ত্রুটি, আবার চেষ্টা করবেন না। পরিবর্তে ত্রুটি বার্তা পড়ুন এবং সেই অনুযায়ী আপনার অনুরোধ পরিবর্তন করুন.

401: অবৈধ শংসাপত্র

অবৈধ অনুমোদন হেডার। আপনি যে অ্যাক্সেস টোকেনটি ব্যবহার করছেন সেটি হয় মেয়াদোত্তীর্ণ বা অবৈধ৷

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

প্রস্তাবিত কর্ম:

  • দীর্ঘস্থায়ী রিফ্রেশ টোকেন ব্যবহার করে একটি নতুন অ্যাক্সেস টোকেন পান।
  • যদি এটি ব্যর্থ হয়, OAuth 2.0 এর সাথে অনুমোদনের অনুরোধে বর্ণিত হিসাবে OAuth প্রবাহের মাধ্যমে ব্যবহারকারীকে নির্দেশ করুন।
  • আপনি যদি এটি একটি পরিষেবা অ্যাকাউন্টের জন্য দেখতে পান তবে পরীক্ষা করুন যে আপনি পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় সমস্ত পদক্ষেপ সফলভাবে সম্পন্ন করেছেন।

403: ব্যবহারকারীর হার সীমা অতিক্রম করেছে

বিকাশকারী কনসোলের সীমার মধ্যে একটিতে পৌঁছে গেছে৷

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

প্রস্তাবিত কর্ম:

403: হারের সীমা অতিক্রম করেছে

ব্যবহারকারী ক্যালেন্ডার প্রতি বা প্রমাণীকৃত ব্যবহারকারী প্রতি Google ক্যালেন্ডার API-এর সর্বোচ্চ অনুরোধের হারে পৌঁছেছেন।

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

প্রস্তাবিত ক্রিয়া: rateLimitExceeded ত্রুটিগুলি 403 বা 429 ত্রুটি কোড ফেরত দিতে পারে—বর্তমানে তারা কার্যত একই রকম এবং সূচকীয় ব্যাকঅফ ব্যবহার করে একইভাবে প্রতিক্রিয়া জানানো উচিত। অতিরিক্তভাবে নিশ্চিত করুন যে আপনার অ্যাপ কোটা পরিচালনার সেরা অনুশীলনগুলি অনুসরণ করে।

403: ক্যালেন্ডার ব্যবহারের সীমা অতিক্রম করেছে৷

আপত্তিজনক আচরণ থেকে Google ব্যবহারকারী এবং পরিকাঠামোকে রক্ষা করার জন্য ব্যবহারকারী Google ক্যালেন্ডারের একটি সীমাতে পৌঁছেছেন।

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Calendar usage limits exceeded.",
    "reason": "quotaExceeded"
   }
  ],
  "code": 403,
  "message": "Calendar usage limits exceeded."
 }
}

প্রস্তাবিত কর্ম:

403: অ-সংগঠকের জন্য নিষিদ্ধ

ইভেন্ট আপডেটের অনুরোধটি একটি অনুলিপিতে ভাগ করা ইভেন্ট বৈশিষ্ট্যগুলির একটি সেট করার চেষ্টা করছে যা সংগঠকের নয়৷ ভাগ করা বৈশিষ্ট্যগুলি (উদাহরণস্বরূপ, guestsCanInviteOthers , guestsCanModify , বা guestsCanSeeOtherGuests ) শুধুমাত্র সংগঠক দ্বারা সেট করা যেতে পারে৷

{
 "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."
 }
}

প্রস্তাবিত কর্ম:

  • আপনি যদি Events: insert , Events: import , বা Events: update ব্যবহার করেন, এবং আপনার অনুরোধে কোনো শেয়ার করা বৈশিষ্ট্য অন্তর্ভুক্ত না থাকে, তাহলে এটি তাদের ডিফল্ট মানগুলিতে সেট করার চেষ্টা করার সমতুল্য। পরিবর্তে ইভেন্টস: প্যাচ ব্যবহার করার কথা বিবেচনা করুন।
  • যদি আপনার অনুরোধে শেয়ার করা প্রপার্টি থাকে, তাহলে নিশ্চিত করুন যে আপনি শুধুমাত্র এই বৈশিষ্ট্যগুলি পরিবর্তন করার চেষ্টা করছেন যদি আপনি সংগঠকের কপি আপডেট করছেন।

404 পাওয়া যায়নি

নির্দিষ্ট সম্পদ পাওয়া যায়নি. এটি বেশ কয়েকটি ক্ষেত্রে ঘটতে পারে। এখানে কিছু উদাহরণঃ:

  • যখন অনুরোধ করা সংস্থান (প্রদত্ত আইডি সহ) কখনও বিদ্যমান ছিল না
  • একটি ক্যালেন্ডার অ্যাক্সেস করার সময় যা ব্যবহারকারী অ্যাক্সেস করতে পারে না

    { "ত্রুটি": { "ত্রুটি": [ { "ডোমেইন": "গ্লোবাল", "কারণ": "নটফাউন্ড", "মেসেজ": "নট ফাউন্ড" } ], "কোড": 404, "বার্তা": " পাওয়া যায়নি" } }

প্রস্তাবিত কর্ম: সূচকীয় ব্যাকঅফ ব্যবহার করুন।

409: অনুরোধকৃত শনাক্তকারী ইতিমধ্যেই বিদ্যমান

প্রদত্ত আইডি সহ একটি উদাহরণ সঞ্চয়স্থানে ইতিমধ্যেই বিদ্যমান।

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "duplicate",
    "message": "The requested identifier already exists."
   }
  ],
  "code": 409,
  "message": "The requested identifier already exists."
 }
}

প্রস্তাবিত পদক্ষেপ: আপনি যদি একটি নতুন উদাহরণ তৈরি করতে চান তবে একটি নতুন আইডি তৈরি করুন, অন্যথায় আপডেট পদ্ধতি কল ব্যবহার করুন৷

410: চলে গেছে

syncToken বা updatedMin প্যারামিটার আর বৈধ নয়। এই ত্রুটিটিও ঘটতে পারে যদি একটি অনুরোধ একটি ইভেন্ট মুছে ফেলার চেষ্টা করে যা ইতিমধ্যেই মুছে ফেলা হয়েছে৷

{
 "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."
 }
}

বা

{
 "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."
 }
}

বা

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "deleted",
    "message": "Resource has been deleted"
   }
  ],
  "code": 410,
  "message": "Resource has been deleted"
 }
}

প্রস্তাবিত পদক্ষেপ: syncToken বা updatedMin প্যারামিটারগুলির জন্য, স্টোরটি মুছুন এবং পুনরায় সিঙ্ক করুন৷ আরও বিশদ বিবরণের জন্য সম্পদগুলি দক্ষতার সাথে সিঙ্ক্রোনাইজ করুন দেখুন। ইতিমধ্যেই মুছে ফেলা ইভেন্টগুলির জন্য, আর কোনও পদক্ষেপের প্রয়োজন নেই৷

412: পূর্বশর্ত ব্যর্থ হয়েছে

ইফ-ম্যাচ হেডারে সরবরাহ করা ইটাগ আর রিসোর্সের বর্তমান ইটাগের সাথে মিলে না।

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "conditionNotMet",
    "message": "Precondition Failed",
    "locationType": "header",
    "location": "If-Match",
    }
  ],
  "code": 412,
  "message": "Precondition Failed"
 }
}

প্রস্তাবিত পদক্ষেপ: সত্তাটি পুনরায় আনুন এবং পরিবর্তনগুলি পুনরায় প্রয়োগ করুন৷ আরও বিশদের জন্য সম্পদের নির্দিষ্ট সংস্করণ পান দেখুন।

429: অনেক বেশি অনুরোধ

একটি rateLimitExceeded ত্রুটি ঘটে যখন ব্যবহারকারী একটি নির্দিষ্ট সময়ের মধ্যে অনেক বেশি অনুরোধ পাঠায়।

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

প্রস্তাবিত ক্রিয়া: rateLimitExceeded ত্রুটিগুলি 403 বা 429 ত্রুটি কোড ফেরত দিতে পারে—বর্তমানে তারা কার্যত একই রকম এবং সূচকীয় ব্যাকঅফ ব্যবহার করে একইভাবে প্রতিক্রিয়া জানানো উচিত। অতিরিক্তভাবে নিশ্চিত করুন যে আপনার অ্যাপ কোটা পরিচালনার সেরা অনুশীলনগুলি অনুসরণ করে।

500: ব্যাকএন্ড ত্রুটি

অনুরোধটি প্রক্রিয়া করার সময় একটি অপ্রত্যাশিত ত্রুটি ঘটেছে৷

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

প্রস্তাবিত কর্ম: সূচকীয় ব্যাকঅফ ব্যবহার করুন।