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

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

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

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

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