আপনার API অনুরোধ জুড়ে শংসাপত্র শেয়ার করা কর্মক্ষমতা উন্নত করে এবং অত্যধিক ওভারহেড এড়ায় যার ফলে হার সীমা ত্রুটি হতে পারে। এই নির্দেশিকা ব্যাখ্যা করে কিভাবে OAuth2 ক্রেডেনশিয়াল ম্যানেজমেন্ট অপ্টিমাইজ করতে হয় যাতে আপনার অ্যাপ Google Ads API-এর সাথে দক্ষতার সাথে ইন্টারঅ্যাক্ট করতে পারে।
আপনার শংসাপত্র ভাগ করে নেওয়ার কৌশল নির্ভর করবে আপনার অ্যাপ মাল্টিথ্রেডেড বা মাল্টিপ্রসেস (বা বিতরণ করা) । একটি অ্যাপ যা প্রতিটি প্রক্রিয়ার মধ্যে মাল্টিপ্রসেস এবং মাল্টিথ্রেড উভয়ই কৌশল ব্যবহার করা উচিত। এই কৌশলগুলি একাধিক Google বিজ্ঞাপন অ্যাকাউন্টের জন্যও মানিয়ে নেওয়া যেতে পারে।
মাল্টিথ্রেডেড
একটি থ্রেড দ্বারা আঁকা প্রতিটি সেশন বা ব্যবহারকারী একই শংসাপত্র বস্তু ব্যবহার করা উচিত। অ্যাক্সেস টোকেন রিফ্রেশগুলিও অবশ্যই সিঙ্ক্রোনাসভাবে সঞ্চালিত হতে হবে যাতে রেসের অবস্থা এড়ানো যায়।
আমাদের ক্লায়েন্ট লাইব্রেরিগুলি নিশ্চিত করে যে শংসাপত্রটি একটি থ্রেড-সেফ অবজেক্ট যা এর অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে সিঙ্ক্রোনাসভাবে নিজেকে রিফ্রেশ করে। আমাদের প্রতিটি ক্লায়েন্ট লাইব্রেরিতে একটি সেশন (বা ব্যবহারকারী) একটি শংসাপত্র সহ অবজেক্ট থাকে যা এটি তার সারাজীবন জুড়ে পুনরায় ব্যবহার করে। থ্রেড জুড়ে শংসাপত্র ভাগ করতে, আপনি একই শংসাপত্র ব্যবহার করে প্রতিটি সেশন তৈরি করুন। উদাহরণস্বরূপ, জাভা ক্লায়েন্ট লাইব্রেরিতে, আপনি একটি Credential
সিঙ্গলটন তৈরি করবেন এবং এটি সমস্ত সেশন জুড়ে শেয়ার করবেন।
মাল্টিপ্রসেস বা বিতরণ
মাল্টিপ্রসেস বা বিতরণ করা প্রক্রিয়াগুলির জন্য, আপনি এটি ভাগ করার আগে আপনাকে শংসাপত্রটি বজায় রাখতে হবে। একাধিক প্রসেস বা সার্ভার একই সময়ে ক্রেডেনশিয়াল রিফ্রেশ করার চেষ্টা করে না তা নিশ্চিত করার জন্য, অতিরিক্ত রিফ্রেশ অনুরোধের ফলে, আপনাকে একটি একক প্রক্রিয়ায় রিফ্রেশ বরাদ্দ করা উচিত।
উদাহরণস্বরূপ, একটি পৃথক কাজ বা পরিষেবা পর্যায়ক্রমে শংসাপত্র রিফ্রেশ করার জন্য দায়ী হতে পারে এবং সার্ভারের একটি পুল দ্বারা ভাগ করা ডেটা স্টোরে এটিকে সক্রিয়ভাবে ঠেলে দেয়। প্রতিটি সার্ভার একটি API অনুরোধ করার সময় ডেটা স্টোর থেকে শংসাপত্র পুনরুদ্ধার করতে পারে।
রিফ্রেশ কাজ
রিফ্রেশ কাজটি রিফ্রেশ শুরু করার আগে বর্তমান শংসাপত্রের মেয়াদ শেষ না হওয়া পর্যন্ত অপেক্ষা করা উচিত নয়। এটি করার ফলে একটি বৈধ শংসাপত্রের অভাবে অ্যাপটি বন্ধ হয়ে যেতে পারে; যদিও, API অনুরোধটি প্রক্রিয়া করার সময় যদি একটি শংসাপত্রের অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায়, তবে অনুরোধটি এখনও সম্পূর্ণ হবে এবং ফলাফল ফিরে আসবে।
আপনার অ্যাক্সেস টোকেন শেষবার যে সময়ে রিফ্রেশ করা হয়েছিল আমরা সেই সময়ের ট্র্যাক রাখার পরামর্শ দিই, এবং মেয়াদ শেষ হওয়া পর্যন্ত 5 মিনিটেরও কম সময় থাকলে রিফ্রেশ করতে বাধ্য করুন৷
আপনি যদি না জানেন কখন একটি অ্যাক্সেস টোকেন শেষবার রিফ্রেশ করা হয়েছিল, তাহলে আপনি এটিকে রিফ্রেশ করার চেষ্টা করতে পারেন অনুমান করে এটির মেয়াদ শেষ হয়ে গেছে। যদি অ্যাক্সেস টোকেনটি ল্যাপসিংয়ের কাছাকাছি না হয়, সার্ভারটি একই অ্যাক্সেস টোকেন ফেরত দেয়, টোকেনের মেয়াদ শেষ না হওয়া পর্যন্ত অবশিষ্ট মিলিসেকেন্ড সহ।
অস্ত্রোপচার
আপনি একটি বিদ্যমান ডেটা স্টোর ব্যবহার করতে পারেন বা সার্ভারের মধ্যে শংসাপত্র ভাগ করে নেওয়ার জন্য একটি নির্দিষ্ট স্থাপন করতে পারেন। সমাধানের মধ্যে রয়েছে ক্যাশিং সার্ভার, যেমন Memcached বা Infinispan , অথবা NoSQL ডেটা স্টোর, যেমন MongoDB ।
ডাটা স্টোরটি দ্রুত রিডিং অপারেশনের জন্য অপ্টিমাইজ করা উচিত কারণ লেখার চেয়ে অনেক বেশি পড়ার অনুরোধ থাকবে। এবং, শংসাপত্রগুলি অবশ্যই নিরাপদে সংরক্ষণ করতে হবে।
শংসাপত্র সংরক্ষণ করার সময়, আপনাকে access_token
পাশাপাশি গণনা করা expiry_time
(এখন + expires_in
) এবং refresh_token
সংরক্ষণ করতে হবে। expiry_time
access_token
রিফ্রেশ অনুরোধের সময় এবং expires_in
সময় হিসাবে গণনা করা হয়।
সার্ভার পুল
পুলের প্রতিটি সার্ভার বা প্রক্রিয়া একটি অনুরোধ করার আগে ডেটা স্টোর থেকে সর্বশেষ শংসাপত্র পুনরুদ্ধার করে। যতক্ষণ রিফ্রেশ কাজটি সঠিকভাবে চলছে, ততক্ষণ প্রমাণপত্রটি বৈধ থাকবে। যাইহোক, রিফ্রেশ কাজ বা ডেটা স্টোর ব্যর্থ হলে, আপনার একটি ফলব্যাক প্রক্রিয়া থাকা উচিত।
যদি একটি সার্ভার বা প্রক্রিয়া ডেটা স্টোর থেকে একটি শংসাপত্র না পায়, অথবা যদি শংসাপত্রের মেয়াদ শেষ হয়ে যায়, তাহলে সমস্যাটি সমাধান না হওয়া পর্যন্ত অ্যাপটিকে API-এর সাথে কাজ চালিয়ে যাওয়ার অনুমতি দেওয়ার জন্য সার্ভারের নিজস্ব শংসাপত্রগুলি রিফ্রেশ করা উচিত।
একাধিক অ্যাকাউন্টের জন্য শংসাপত্র ব্যবস্থাপনা
একটি Google বিজ্ঞাপন ম্যানেজার অ্যাকাউন্টের জন্য তৈরি করা একটি শংসাপত্র তার সমস্ত চাইল্ড অ্যাকাউন্ট অ্যাক্সেস করতে ব্যবহার করা যেতে পারে। এইভাবে, একটি একক ম্যানেজার অ্যাকাউন্টের শ্রেণিবিন্যাস সহ ব্যবহারকারীদের জন্য, সাধারণত শীর্ষ-স্তরের ম্যানেজার অ্যাকাউন্টের নীচে থাকা সমস্ত Google বিজ্ঞাপন অ্যাকাউন্টের জন্য ব্যবহার করার জন্য একটি প্রমাণপত্র তৈরি করা যথেষ্ট।
যদি আপনার অ্যাপের Google Ads অ্যাকাউন্ট অ্যাক্সেস করার প্রয়োজন হয় যেগুলি কোনো ম্যানেজার অ্যাকাউন্টের অনুক্রমের মধ্যে একে অপরের সাথে সম্পর্কিত নয়, তাহলে আপনাকে বিভিন্ন অ্যাকাউন্টের জন্য বিভিন্ন ক্রেডেনশিয়াল তৈরি এবং বজায় রাখতে হবে—যেমন প্রতিটি Google Ads ক্লায়েন্ট অ্যাকাউন্টের জন্য যা আপনি অ্যাক্সেস করেন বা প্রতিটি শীর্ষ-স্তরের জন্য ম্যানেজার অ্যাকাউন্ট স্বাধীন শ্রেণিবিন্যাস আপনি অ্যাক্সেস করেন।
আপনি মাল্টিথ্রেডেড বা মাল্টিপ্রসেস/ডিস্ট্রিবিউটেড অ্যাপের জন্য একই কৌশল অনুসরণ করতে পারেন ছোটখাটো পরিবর্তন সহ। শেয়ার্ড ডেটা স্টোর ব্যবহার করার সময়, শংসাপত্রগুলি সঠিক অ্যাকাউন্টের সাথে যুক্ত কিনা তা নিশ্চিত করতে অ্যাকাউন্ট শনাক্তকারী customerId
দ্বারা সূচীবদ্ধ করা আবশ্যক। উপরন্তু, রিফ্রেশ কাজের সমস্ত শংসাপত্র রিফ্রেশ রাখা উচিত। একটি নতুন অ্যাকাউন্ট লিঙ্ক করা হলে, রিফ্রেশ কাজ ট্রিগার করা প্রয়োজন হতে পারে.
অবশেষে, মাল্টিথ্রেডেড অ্যাপে, আপনার শুধুমাত্র সেই থ্রেড জুড়ে ক্রেডেনশিয়াল অবজেক্ট শেয়ার করা উচিত যা সেই অ্যাকাউন্টে কাজ করছে যার সাথে ক্রেডেনশিয়াল অবজেক্ট যুক্ত।