ইকাই ল্যান, YouTube Developer Relations – June 2013
ইউটিউব এপিআই ব্যবহারকারীর অনুরোধ অনুমোদন করতে OAuth 2.0 ব্যবহার করে। আমাদের প্রায়শই জিজ্ঞাসা করা হয় যে আমরা ভবিষ্যতে ইউটিউব এপিআই-তে ClientLogin অথেন্টিকেশন বা অনুরূপ কিছুর জন্য সমর্থন যোগ করব কিনা। তবে, আমরা ২০ এপ্রিল, ২০১২ থেকে আনুষ্ঠানিকভাবে ClientLogin অপ্রচলিত ঘোষণা করেছি এবং এই ধরনের কোনো ব্যবস্থা যোগ করার পরিকল্পনা নেই।
বিভিন্ন কারণে আমরা মনে করি যে, ClientLogin এর চেয়ে OAuth 2.0 অথরাইজেশনের বিভিন্ন ফ্লো সমর্থন করা ইউটিউব ব্যবহারকারীদের জন্য শ্রেয়। এই ফ্লো-গুলো ডেস্কটপ অ্যাপ্লিকেশন, শুধুমাত্র ওয়েব-ভিত্তিক অ্যাপ্লিকেশন, মোবাইল অ্যাপ্লিকেশন, এমনকি টেলিভিশনের মতো ডিভাইসে চালিত অ্যাপ্লিকেশনগুলোকেও সমর্থন করে, যেগুলোতে উন্নত ইনপুট ব্যবস্থা নেই; যা ClientLogin ব্যবহার করে করা কঠিন। এছাড়াও, আমরা দেখেছি যে অ্যাপ্লিকেশন চালু হওয়ার পর ClientLogin অনেক ডেভেলপারের জন্য আরও বেশি মাথাব্যথার কারণ হয়ে দাঁড়ায়।
সার্ভার-সাইড, স্বতন্ত্র স্ক্রিপ্টের জন্য OAuth 2.0 ব্যবহার
অনেক ডেভেলপার ব্রাউজার ছাড়াই সার্ভারে চালিত কমান্ড-লাইন স্ক্রিপ্ট অনুমোদন করার জন্য ClientLogin ব্যবহার করেন। OAuth 2.0-এর ক্ষেত্রে প্রায় সবসময়ই একটি ব্রাউজারের প্রয়োজন হয় – এর ব্যতিক্রম হলো যখন আপনি এমন কোনো অ্যান্ড্রয়েড অ্যাপ্লিকেশনে কাজ করছেন যা GoogleAuthUtil. এর মাধ্যমে টোকেন সংগ্রহ করতে Google Play Services ব্যবহার করে।
শুধুমাত্র ওয়েব-ভিত্তিক কার্যপ্রবাহে , কোনো ওয়েবসাইট যদি ব্যবহারকারীর পক্ষ থেকে প্রমাণীকৃত এপিআই (API) কল করতে চায়, তবে তাকে অবশ্যই ব্যবহারকারীকে একটি google.com প্রমাণীকরণ পৃষ্ঠায় পুনঃনির্দেশিত করতে হবে, যেখানে ব্যাখ্যা করা থাকে যে অ্যাপ্লিকেশনটি কী অ্যাক্সেস করার চেষ্টা করছে। এরপর ওয়েব অ্যাপ্লিকেশনটি একটি টোকেন পায়, যা ব্যবহার করে এটি এপিআই কল করে। ব্যবহারকারী তখন connected apps and sites পৃষ্ঠাটি ব্যবহার করে যেকোনো সময় অ্যাপ্লিকেশনটির অ্যাক্সেস প্রত্যাহার করতে পারেন।
আমাদের পাইথন কোড স্যাম্পলগুলো দেখায় যে কীভাবে কমান্ড-লাইন স্ক্রিপ্ট একটি ব্রাউজার চালু করতে পারে এবং টার্মিনাল উইন্ডো থেকে এপিআই কল করতে পারে, অথরাইজেশন রিডাইরেক্টের পরে কোড শোনার জন্য একটি লোকাল সার্ভার তৈরি করতে পারে, এবং ভবিষ্যতের এপিআই কলের জন্য স্বয়ংক্রিয়ভাবে একটি টোকেন সংরক্ষণ করতে পারে। এটি কীভাবে কাজ করে তার একটি ভিডিও নিচে দেওয়া হলো:
ব্যবহৃত টোকেনটি একটি ASCII স্ট্রিং। যদি এটি একটি offline টোকেন হয়, তবে এটি পোর্টেবল । প্রাপ্ত টোকেনটি ব্যবহার করে, আপনি আপনার ডেস্কটপে স্ক্রিপ্টটি চালাতে পারবেন, তারপর কোডটি কপি করে একটি রিমোট সার্ভারে GUI ছাড়াই ব্যবহার করতে পারবেন, যদি সেই কোডটি একই ক্লায়েন্ট আইডি এবং সিক্রেট ব্যবহার করে একটি OAuth 2.0 ক্লায়েন্ট ইনস্ট্যানশিয়েট করে। পাইথন ছাড়াও, অন্যান্য প্রোগ্রামিং ভাষার জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরিগুলোও টোকেন পরিচালনার জন্য সহায়ক মেথড সরবরাহ করে, যা ক্লায়েন্টদের মধ্যে শেয়ার করা যায় এবং এমনকি নিম্ন-স্তরের HTTP লাইব্রেরিতে সরাসরি ক্লায়েন্ট হেডারে বা URL প্যারামিটার হিসাবেও ব্যবহার করা যায়।
অফলাইন টোকেন ব্যবহার করে এমন কিছু সার্ভার-সাইড স্ক্রিপ্টের উদাহরণ:
- একটি ডেমন যা ইউটিউবে স্বয়ংক্রিয়ভাবে আপলোড করার জন্য নতুন ভিডিওর খোঁজে একটি ডিরেক্টরি পর্যবেক্ষণ করে।
- একটি ক্রন জব যা প্রতিদিন নতুন কন্টেন্ট দিয়ে প্লেলিস্ট আপডেট করে।
- একটি স্ক্রিপ্ট যা ইউটিউব অ্যানালিটিক্স এপিআই (YouTube Analytics API)- এর মাধ্যমে ভিডিও ডেটা নিরীক্ষণ করে এবং নির্দিষ্ট কিছু ঘটনা ঘটলে, যেমন মোট দেখার সময় (total watch time) একটি সীমা অতিক্রম করলে, চ্যানেল ম্যানেজারদের অবহিত করে। উল্লেখ্য যে, এক্ষেত্রে OAuth 2.0-ই একমাত্র সমর্থিত অনুমোদন পদ্ধতি, কারণ অ্যানালিটিক্স এপিআই ক্লায়েন্টলগইন (ClientLogin) সমর্থন করে না।
দীর্ঘস্থায়ী অ্যাক্সেস টোকেন সম্পর্কিত অংশে সার্ভার-সাইড প্রক্রিয়ার জন্য ব্যবহারযোগ্য অফলাইন টোকেনগুলো কীভাবে তৈরি করতে হয়, সে সম্পর্কে আরও বিস্তারিত তথ্য দেওয়া হয়েছে।
ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট ব্যবহারের সর্বোত্তম অনুশীলন
যে কোনো কোড যা একই ক্লায়েন্ট আইডি এবং সিক্রেট পেয়ার শেয়ার করে, তা একই অ্যাক্সেস টোকেন ব্যবহার করতে পারে। আপনার প্রতিষ্ঠানের অভ্যন্তরীণ মেশিন এবং ডিভাইসে চালিত কোডের জন্য ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেটের অ্যাক্সেস সীমাবদ্ধ রাখাই সবচেয়ে ভালো।
আপনার নেটিভ মোবাইল অ্যাপ্লিকেশন কোডের অংশ হিসেবে আপনার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট অন্তর্ভুক্ত করবেন না। মোবাইল ডিভাইস থেকে OAuth 2.0 অথেন্টিকেশন ব্যবহারকারী সকল ডেভেলপারের "ইনস্টলড অ্যাপ্লিকেশন" ক্লায়েন্ট আইডি ব্যবহার করা উচিত, যা অনুরোধটি শুধুমাত্র আপনার টিম দ্বারা প্রকাশিত কোনো অ্যাপ্লিকেশন থেকে আসছে কিনা তা যাচাই করার জন্য অতিরিক্ত তথ্য চেয়ে থাকে।

অ্যান্ড্রয়েড ডিভাইসগুলিতে, ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট ব্যবহার করার পরিবর্তে, আপনার অ্যাপ্লিকেশনটি প্যাকেজ নেম এবং একটি সাইনিং সার্টিফিকেট হ্যাশের সমন্বয়ে শনাক্ত করা হয়। আইওএস ডিভাইসগুলিতে, বান্ডেল আইডি এবং অ্যাপ স্টোর আইডি ব্যবহার করা হয়। এই তথ্য পুনরুদ্ধার করার বিষয়ে অফিসিয়াল ডকুমেন্টেশন Google Cloud console হেল্প পেজে পাওয়া যাবে।
সার্ভিস অ্যাকাউন্টগুলো ইউটিউব এপিআই-এর সাথে কাজ করে না।
সার্ভিস অ্যাকাউন্ট ইউটিউব ডেটা এপিআই কল করার জন্য কাজ করে না, কারণ সার্ভিস অ্যাকাউন্টের জন্য একটি সংযুক্ত ইউটিউব চ্যানেল প্রয়োজন হয় এবং আপনি সার্ভিস অ্যাকাউন্টের সাথে নতুন বা বিদ্যমান চ্যানেল সংযুক্ত করতে পারবেন না। আপনি যদি ইউটিউব ডেটা এপিআই কল করার জন্য একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করেন, তাহলে এপিআই সার্ভার একটি এরর রিটার্ন করে, যেখানে এরর টাইপ হিসেবে unauthorized এবং কারণ হিসেবে youtubeSignupRequired সেট করা থাকে।
ইউটিউব এপিআই-তে অফলাইন/দীর্ঘস্থায়ী অ্যাক্সেস
OAuth 2.0-তে স্বল্পস্থায়ী এবং দীর্ঘস্থায়ী টোকেন রয়েছে। এককালীন অপারেশনের জন্য, স্বল্পস্থায়ী অ্যাক্সেস টোকেনই সেরা বিকল্প। এই টোকেনগুলো দেওয়ার অল্প সময়ের মধ্যেই মেয়াদোত্তীর্ণ হয়ে যায়। দীর্ঘ সময় ধরে চলা কাজের জন্য, আপনি একটি রিফ্রেশ টোকেন সংগ্রহ করার কথা ভাবতে পারেন, যা স্বল্পস্থায়ী অ্যাক্সেস টোকেন ফিরিয়ে আনতে ব্যবহৃত হয়।
আপনার অ্যাপ্লিকেশনটি যেন একটি দীর্ঘস্থায়ী রিফ্রেশ টোকেন পায় এবং কোনো স্বল্পস্থায়ী অ্যাক্সেস টোকেন না পায়, তা নিশ্চিত করতে, ক্লায়েন্ট আইডি তৈরি করার সময় "ইনস্টলড অ্যাপ্লিকেশন" ফ্লো ব্যবহার করুন এবং "ইনস্টলড অ্যাপ্লিকেশন টাইপ" ভ্যালুর জন্য " Other " নির্বাচন করুন:

এই ব্যবহারের ক্ষেত্রে "ইনস্টল করা অ্যাপ্লিকেশন" ফ্লো ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। যদি কোনো ওয়েব অ্যাপ্লিকেশনে আপনার ইউটিউব এপিআই-তে দীর্ঘস্থায়ী অ্যাক্সেসের প্রয়োজন হয়, তাহলে প্রাথমিক অথরাইজেশন অনুরোধে বা আপনার ক্লায়েন্ট কনফিগারেশনে access_type প্যারামিটারটিকে offline এবং approval_prompt প্যারামিটারটিকে force সেট করে আপনি একটি অ্যাক্সেস টোকেন পেতে পারেন। কিছু ক্লায়েন্ট লাইব্রেরি অ্যাক্সেস টোকেন আনা এবং রিফ্রেশ করার কাজটি পরিচালনা করে। আপনি যদি নিজের কাস্টম অথরাইজেশন কোড লিখতে আগ্রহী হন, তাহলে আমরা গুগল কোড ব্লগে একটি ব্লগ পোস্ট প্রকাশ করেছি যা আপনি আপনার কোডের ভিত্তি হিসাবে ব্যবহার করতে পারেন।
ফোন, ট্যাবলেট এবং অন্যান্য ডিভাইসে OAuth 2.0 ব্যবহার করা
অ্যান্ড্রয়েড অ্যাপ্লিকেশন লেখার সময়, ডেভেলপাররা অনুমোদনের বিবরণগুলি পরিচালনা করার জন্য Google Play services -এর সুবিধা নিতে পারেন। গুগল প্লে সার্ভিসেস ইউটিউব প্ল্যাটফর্মের এপিআই সহ সমস্ত গুগল এপিআই-এর জন্য একটি স্ট্যান্ডার্ড অনুমোদন প্রক্রিয়া প্রদান করে। এই পদ্ধতিটি ClientLogin ব্যবহার করে কাস্টম প্রমাণীকরণের চেয়ে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনের ব্যবহারকারীদের জন্য অনেক উন্নত ব্যবহারকারীর অভিজ্ঞতা প্রদান করবে।

iOS ডিভাইসগুলিতে গুগল দুটি বিকল্প প্রদান করে:
- Google+ Platform for iOS , যা Google পণ্যগুলির জন্য সাইন-ইন সংহত করে এবং সামাজিক বৈশিষ্ট্যগুলিও সক্ষম করে।
- gtm-oauth2 toolkit , যা একটি অনুমোদন UIWebView প্রদান করে এবং টোকেন পরিচালনা করে।
যেসব ডিভাইস "সেকেন্ড স্ক্রিন" হিসেবে কাজ করার জন্য তৈরি, অথবা টেলিভিশনের মতো যেসব ডিভাইসে সহজে ব্যবহারযোগ্য ইনপুট ব্যবস্থা নেই, সেগুলোর জন্য OAuth 2.0 for Devices হলো সবচেয়ে পছন্দের পদ্ধতি। যখন কোনো অনুমোদনের অনুরোধের প্রয়োজন হয়, তখন OAuth 2.0 for Devices ব্যবহারকারীকে একটি অনন্য কোড দেখানোর মাধ্যমে কাজ করে। এই পর্যায়ে, ব্যবহারকারীদের ল্যাপটপ বা ফোনের মতো অন্য কোনো ডিভাইসে http://google.com/device এ ব্রাউজ করে অনন্য কোডটি প্রবেশ করাতে বলা হয়। অ্যাপ্লিকেশনটি এইরকম দেখতে একটি স্ক্রিন প্রদর্শন করে:

ব্যবহারকারী যখন অন্য কোনো ডিভাইসে কোডটি প্রবেশ করান, তখন অ্যাপ্লিকেশনটি কোডটি প্রবেশ করানো হয়েছে কিনা তা দেখার জন্য পর্যায়ক্রমে পোল করে। কোডটি প্রবেশ করানো হয়ে গেলে, এটি এপিআই (API) কল করার জন্য একটি টোকেন সংগ্রহ করে। এটি বাস্তবে দেখতে, ডেমোটি দেখুন, যা যেকোনো ওয়েব-সক্ষম ডিভাইসে চালানো যেতে পারে। এপিআইটি প্ল্যাটফর্ম-নিরপেক্ষ, যা এটিকে এমন ডিভাইসগুলোর জন্য উপযোগী করে তোলে যেগুলোতে ওয়েব রেন্ডারিং ক্ষমতা নেই। আমরা ডেমোটির জন্য পাইথনে লেখা নমুনা কোড পোস্ট করেছি, যা রেফারেন্স হিসেবে ব্যবহার করা যেতে পারে।
সারসংক্ষেপ
OAuth 2.0 অথরাইজেশন সেইসব ডেভেলপারদের জন্য নমনীয়তা প্রদান করে যাদের ইউটিউব অথরাইজেশনের প্রয়োজন হয়। যেসব ডেভেলপার ClientLogin ব্যবহারে অভ্যস্ত, তারা হয়তো দেখবেন যে তাদের অ্যাপ্লিকেশনগুলোকে OAuth 2.0 ব্যবহারের জন্য প্রস্তুত করতে শুরুতে কিছুটা বেশি কাজ করতে হয়, কিন্তু একবার পোর্ট করা হয়ে গেলে, OAuth 2.0 অ্যাপ্লিকেশনগুলো ব্যবহারকারীদের জন্য একাধিক প্ল্যাটফর্মে আরও বেশি নমনীয়তা, নিরাপত্তা এবং ব্যবহারযোগ্যতা প্রদান করে।
OAuth 2.0 অথবা এই নিবন্ধের কোনো উদাহরণ সম্পর্কে আপনার যদি আরও কোনো প্রশ্ন থাকে, তাহলে অনুগ্রহ করে StackOverflow-তে youtube-api ট্যাগ ব্যবহার করে জিজ্ঞাসা করুন।