इकई लैन, YouTube Developer Relations – June 2013
YouTube API, उपयोगकर्ता के अनुरोधों को अनुमति देने के लिए OAuth 2.0 का इस्तेमाल करते हैं. हमसे अक्सर यह पूछा जाता है कि क्या आने वाले समय में, YouTube API में ClientLogin पुष्टि करने की सुविधा या इसी तरह की कोई अन्य सुविधा जोड़ी जाएगी. हालांकि, हमने 20 अप्रैल, 2012 से ClientLogin को आधिकारिक तौर पर बंद कर दिया है. साथ ही, इस तरह का कोई तरीका जोड़ने का हमारा कोई प्लान नहीं है.
हमें लगता है कि YouTube उपयोगकर्ताओं के लिए, OAuth 2.0 ऑथराइज़ेशन के अलग-अलग फ़्लो को सपोर्ट करना, ClientLogin से बेहतर है. इसकी कई वजहें हैं. ये फ़्लो, डेस्कटॉप ऐप्लिकेशन, सिर्फ़ वेब ऐप्लिकेशन, मोबाइल ऐप्लिकेशन, और यहां तक कि टीवी जैसे डिवाइसों पर चलने वाले ऐप्लिकेशन के इस्तेमाल के उदाहरणों के साथ काम करते हैं. इन डिवाइसों में, इनपुट के लिए बेहतर तरीके नहीं होते हैं. ClientLogin का इस्तेमाल करके ऐसा करना मुश्किल होता है. हमने यह भी देखा है कि ClientLogin की वजह से, लॉन्च के बाद कई डेवलपर को ज़्यादा समस्याएं आती हैं.
सर्वर-साइड और स्टैंडअलोन स्क्रिप्ट के लिए OAuth 2.0 का इस्तेमाल करना
कई डेवलपर, ब्राउज़र के बिना सर्वर पर चलने वाली कमांड-लाइन स्क्रिप्ट को अनुमति देने के लिए ClientLogin का इस्तेमाल करते हैं. OAuth 2.0 के साथ, ब्राउज़र का इस्तेमाल लगभग हमेशा किया जाता है. हालांकि, इसका एक अपवाद है. जब किसी ऐसे Android ऐप्लिकेशन पर काम किया जा रहा हो जो Google Play Services का इस्तेमाल करके, GoogleAuthUtil. के ज़रिए टोकन फ़ेच करता है
सिर्फ़ वेब पर उपलब्ध फ़्लो में, किसी वेबसाइट को उपयोगकर्ता की ओर से पुष्टि किए गए एपीआई कॉल करने होते हैं. इसके लिए, उसे उपयोगकर्ता को google.com पुष्टि करने वाले पेज पर रीडायरेक्ट करना होगा. इस पेज पर यह जानकारी दी गई होगी कि ऐप्लिकेशन किस डेटा को ऐक्सेस करने की कोशिश कर रहा है. इसके बाद, वेब ऐप्लिकेशन को एक टोकन मिलता है. इसका इस्तेमाल करके, वह एपीआई कॉल करता है. इसके बाद, उपयोगकर्ता connected apps and sites पेज का इस्तेमाल करके, ऐप्लिकेशन के ऐक्सेस को किसी भी समय रद्द कर सकता है.
हमारे Python कोड के सैंपल से पता चलता है कि कमांड-लाइन स्क्रिप्ट, ब्राउज़र को कैसे लॉन्च कर सकती हैं और टर्मिनल विंडो से एपीआई कॉल कैसे कर सकती हैं. साथ ही, ये स्क्रिप्ट, अनुमति देने के लिए रीडायरेक्ट करने के बाद कोड को सुनने के लिए लोकल सर्वर कैसे बना सकती हैं और आने वाले समय में एपीआई कॉल के लिए टोकन को अपने-आप कैसे सेव कर सकती हैं. इस सुविधा का इस्तेमाल करने का तरीका यहां दिया गया है:
इस्तेमाल किया गया टोकन, ASCII स्ट्रिंग है. अगर यह offline टोकन है, तो इसे पोर्ट किया जा सकता है. फ़ेच किए गए टोकन का इस्तेमाल करके, अपने डेस्कटॉप पर स्क्रिप्ट चलाई जा सकती है. इसके बाद, कोड को कॉपी करके, बिना जीयूआई वाले रिमोट सर्वर पर इस्तेमाल किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि कोड, OAuth 2.0 क्लाइंट को उसी क्लाइंट आईडी और सीक्रेट के साथ इंस्टैंटिएट करे. Python के अलावा, अन्य प्रोग्रामिंग भाषाओं के लिए Google API क्लाइंट लाइब्रेरी भी टोकन मैनेज करने के लिए हेल्पर तरीके उपलब्ध कराती हैं. इन्हें क्लाइंट के बीच शेयर किया जा सकता है. साथ ही, इनका इस्तेमाल सीधे तौर पर क्लाइंट हेडर में या यूआरएल पैरामीटर के तौर पर लोअर-लेवल एचटीटीपी लाइब्रेरी में भी किया जा सकता है.
ऑफ़लाइन टोकन का इस्तेमाल करने वाली सर्वर-साइड स्क्रिप्ट के कुछ उदाहरण:
- यह एक डेमॉन है. यह किसी डायरेक्ट्री में नए वीडियो की निगरानी करता है, ताकि उन्हें 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 को कॉल करने के लिए किसी सेवा खाते का इस्तेमाल किया जाता है, तो एपीआई सर्वर गड़बड़ी का मैसेज दिखाता है. इसमें गड़बड़ी का टाइप 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 का इस्तेमाल करके अनुमति से जुड़ी जानकारी को मैनेज कर सकते हैं. Google Play सेवाएं, सभी Google API के लिए अनुमति देने का स्टैंडर्ड फ़्लो उपलब्ध कराती हैं. इनमें YouTube प्लैटफ़ॉर्म के लिए एपीआई भी शामिल हैं. इस तरीके से, आपके Android ऐप्लिकेशन के उपयोगकर्ताओं को ClientLogin का इस्तेमाल करके कस्टम पुष्टि करने की सुविधा से बेहतर अनुभव मिलेगा.

iOS डिवाइसों पर, Google दो विकल्प उपलब्ध कराता है:
- Google+ Platform for iOS, जो Google के प्रॉडक्ट में साइन-इन करने की सुविधा को इंटिग्रेट करता है. साथ ही, यह सोशल मीडिया से जुड़ी सुविधाएं भी चालू करता है
- gtm-oauth2 toolkit, जो ऑथराइज़ेशन UIWebView देता है और टोकन मैनेज करता है
जिन डिवाइसों को "दूसरी स्क्रीन" वाले डिवाइसों के तौर पर इस्तेमाल किया जाता है या जिन डिवाइसों में इनपुट के लिए इस्तेमाल किए जाने वाले आसान तरीके नहीं होते हैं, उनके लिए OAuth 2.0 for Devices का इस्तेमाल करना बेहतर होता है. जैसे, टेलीविज़न. OAuth 2.0 for Devices, उपयोगकर्ता को एक यूनीक कोड दिखाता है. ऐसा तब होता है, जब अनुमति देने का अनुरोध किया जाता है. इस दौरान, उपयोगकर्ताओं को किसी दूसरे डिवाइस, जैसे कि लैपटॉप या फ़ोन पर http://google.com/device पर जाने के लिए कहा जाता है. इसके बाद, उन्हें यूनीक कोड डालना होता है. ऐप्लिकेशन में कुछ इस तरह की स्क्रीन दिखती है:

जब उपयोगकर्ता किसी दूसरे डिवाइस पर कोड डाल रहा होता है, तब ऐप्लिकेशन समय-समय पर यह देखता है कि कोड डाला गया है या नहीं. ऐसा होने के बाद, यह एपीआई कॉल करने के लिए टोकन वापस पाता है. इसे काम करते हुए देखने के लिए, डेमो देखें. इसे इंटरनेट से कनेक्ट किए जा सकने वाले किसी भी डिवाइस पर चलाया जा सकता है. यह एपीआई, प्लैटफ़ॉर्म पर निर्भर नहीं करता. इसलिए, यह उन डिवाइसों के लिए भी काम का है जिनमें वेब रेंडरिंग की सुविधाएं नहीं हैं. हमने डेमो के लिए, Python में सैंपल कोड पोस्ट किया है, ताकि इसे रेफ़रंस के तौर पर इस्तेमाल किया जा सके.
खास जानकारी
OAuth 2.0 की मदद से, उन डेवलपर को अनुमति दी जा सकती है जिन्हें YouTube की अनुमति चाहिए. ClientLogin के बारे में जानकारी रखने वाले डेवलपर को, OAuth 2.0 का इस्तेमाल करने के लिए अपने ऐप्लिकेशन सेट अप करने में थोड़ी ज़्यादा मेहनत करनी पड़ सकती है. हालांकि, पोर्ट करने के बाद, OAuth 2.0 ऐप्लिकेशन, उपयोगकर्ताओं को कई प्लैटफ़ॉर्म पर ज़्यादा सुविधा, सुरक्षा, और इस्तेमाल करने में आसानी देते हैं.
अगर आपको OAuth 2.0 या इस लेख में दिए गए किसी उदाहरण के बारे में कोई और सवाल पूछना है, तो कृपया StackOverflow पर youtube-api टैग का इस्तेमाल करके पूछें.