Ikai Lan, YouTube Developer Relations – June 2013
YouTube के एपीआई, उपयोगकर्ता के अनुरोधों को अनुमति देने के लिए OAuth 2.0 का इस्तेमाल करते हैं. हमसे अक्सर पूछा जाता है कि क्या आने वाले समय में, हम YouTube API में ClientLogin पुष्टि करने की सुविधा या इससे मिलती-जुलती कोई सुविधा जोड़ेंगे. हालांकि, हमने 20 अप्रैल, 2012 से आधिकारिक तौर पर इस सुविधा को बंद कर दिया हैClientLogin. साथ ही, इस तरह की सुविधा को फिर से जोड़ने का कोई प्लान नहीं है.
हमें लगता है कि ClientLogin के मुकाबले, OAuth 2.0 के अलग-अलग फ़्लो का इस्तेमाल करना, YouTube के उपयोगकर्ताओं के लिए बेहतर है. इसकी कई वजहें हैं. ये फ़्लो, डेस्कटॉप ऐप्लिकेशन, सिर्फ़ वेब के लिए बने ऐप्लिकेशन, नेटिव मोबाइल ऐप्लिकेशन, और टीवी जैसे ऐसे डिवाइसों पर चलने वाले ऐप्लिकेशन के इस्तेमाल के उदाहरणों के साथ काम करते हैं जिनमें बेहतर इनपुट सिस्टम नहीं होते. ClientLogin का इस्तेमाल करके, ऐसा करना मुश्किल होता है. साथ ही, हमें पता चला है कि ClientLogin की वजह से, कई डेवलपर को ऐप्लिकेशन लॉन्च करने के बाद ज़्यादा समस्याएं आती हैं. इनमें से कुछ समस्याओं के बारे में हमने अपनी ब्लॉग पोस्ट, ClientLogin #FAIL में बताया है.
सर्वर-साइड और स्टैंडअलोन स्क्रिप्ट के लिए OAuth 2.0 का इस्तेमाल करना
कई डेवलपर, ब्राउज़र के बिना सर्वर पर चलने वाली कमांड-लाइन स्क्रिप्ट को अनुमति देने के लिए ClientLogin का इस्तेमाल करते हैं. OAuth 2.0 के साथ, ब्राउज़र का इस्तेमाल ज़रूर किया जाता है. हालांकि, अगर किसी ऐसे Android ऐप्लिकेशन पर काम किया जा रहा है जो GoogleAuthUtil. के ज़रिए टोकन पाने के लिए Google Play Services का इस्तेमाल करता है, तो ऐसा नहीं होता
सिर्फ़ वेब के लिए उपलब्ध फ़्लो में, अगर किसी वेबसाइट को उपयोगकर्ता की ओर से पुष्टि किए गए एपीआई कॉल करने हैं, तो उसे उपयोगकर्ता को 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 API 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 services, सभी Google API के लिए अनुमति देने का स्टैंडर्ड तरीका उपलब्ध कराता है. इसमें YouTube प्लैटफ़ॉर्म के लिए एपीआई भी शामिल हैं. इस तरीके से, ClientLogin का इस्तेमाल करके कस्टम पुष्टि करने की तुलना में, आपके Android ऐप्लिकेशन के उपयोगकर्ताओं को बेहतर अनुभव मिलेगा.
iOS डिवाइसों पर, Google दो विकल्प देता है:
- Google+ Platform for iOS, जो Google के प्रॉडक्ट के लिए साइन इन को इंटिग्रेट करता है और सोशल मीडिया की सुविधाओं को भी चालू करता है
- gtm-oauth2 toolkit, जो अनुमति UIWebView देता है और टोकन मैनेज करता है
"सेकंड स्क्रीन" के तौर पर काम करने वाले डिवाइसों या टीवी जैसे ऐसे डिवाइसों के लिए, डिवाइसों के लिए OAuth 2.0 का इस्तेमाल करना बेहतर होता है जिनमें आसानी से इस्तेमाल किए जा सकने वाले इनपुट सिस्टम नहीं होते. डिवाइसों के लिए OAuth 2.0, अनुमति के अनुरोध के लिए उपयोगकर्ता को एक यूनीक कोड दिखाकर काम करता है. इसके बाद, उपयोगकर्ताओं को किसी दूसरे डिवाइस, जैसे कि लैपटॉप या फ़ोन पर http://google.com/device पर ब्राउज़ करने और यूनीक कोड डालने के लिए कहा जाता है. ऐप्लिकेशन में एक स्क्रीन दिखती है, जो कुछ इस तरह दिखती है:
जब उपयोगकर्ता किसी दूसरे डिवाइस पर कोड डालता है, तब ऐप्लिकेशन समय-समय पर यह पता लगाने के लिए पोल करता है कि कोड डाला गया है या नहीं. इसके बाद, यह एपीआई कॉल करने के लिए टोकन हासिल करता है. इसे काम करते हुए देखने के लिए, डेमो देखें. इसे वेब की सुविधा वाले किसी भी डिवाइस पर चलाया जा सकता है. एपीआई, प्लैटफ़ॉर्म पर निर्भर नहीं करता. इसलिए, यह उन डिवाइसों के लिए काम का है जिनमें वेब रेंडरिंग की सुविधाएं नहीं हैं. हमने रेफ़रंस के तौर पर इस्तेमाल किए जाने वाले डेमो के लिए, Python में सैंपल कोड पोस्ट किया है.
खास जानकारी
OAuth 2.0 की अनुमति से, उन डेवलपर को आसानी मिलती है जिन्हें YouTube से अनुमति लेनी होती है. ClientLogin के बारे में जानने वाले डेवलपर को यह लग सकता है कि OAuth 2.0 का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन को सेट अप करने में थोड़ी ज़्यादा मेहनत करनी पड़ेगी. हालांकि, पोर्ट करने के बाद, OAuth 2.0 ऐप्लिकेशन, असली उपयोगकर्ताओं को कई प्लैटफ़ॉर्म पर ज़्यादा सुविधाएं, सुरक्षा, और इस्तेमाल करने की सुविधा देते हैं.
अगर आपको OAuth 2.0 या इस लेख में दिए गए किसी भी उदाहरण के बारे में कुछ और पूछना है, तो कृपया youtube-api टैग के साथ StackOverflow पर पूछें.