ClientLogin से OAuth 2.0 में ले जाएं

इकाई लैन, YouTube Developer Relations – June 2013

उपयोगकर्ता के अनुरोधों को अनुमति देने के लिए, YouTube APIs OAuth 2.0 का इस्तेमाल करते हैं. हमसे अक्सर पूछा जाता है कि ClientLogin की पुष्टि करने की सुविधा जोड़ी जाएगी या नहीं. इसके अलावा, हमसे YouTube API में इसी तरह की कोई जानकारी जोड़ी जाएगी. हालांकि, हमने ClientLogin को 20 अप्रैल, 2012 से आधिकारिक रूप से ClientLogin को हटा दिया है और ऐसी कोई सुविधा जोड़ने के बारे में कोई योजना नहीं है.

YouTube के ClientLogin के बजाय, OAuth 2.0 के इस्तेमाल की अनुमति देने के अलग-अलग तरीकों को इस्तेमाल करने की बेहतर समझ होने की कई वजहें हैं. ये फ़्लो डेस्कटॉप ऐप्लिकेशन, सिर्फ़ वेब ऐप्लिकेशन, नेटिव मोबाइल ऐप्लिकेशन, और यहां तक कि ऐसे टीवी पर चलने वाले ऐप्लिकेशन के लिए इस्तेमाल के उदाहरणों के साथ काम करते हैं जिनमें बेहतर इनपुट मैकेनिज़्म नहीं होता. 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 टोकन है, तो इसे पोर्ट किया जा सकता है. वापस मिले टोकन का इस्तेमाल करके, आप अपने डेस्कटॉप पर स्क्रिप्ट चला पाएंगे. इसके बाद, GUI के बिना रिमोट सर्वर पर कोड को कॉपी करके इस्तेमाल कर पाएंगे. हालांकि, यह ज़रूरी है कि कोड OAuth 2.0 क्लाइंट को उसी क्लाइंट आईडी और सीक्रेट के साथ इंस्टैंशिएट करे. Python के अलावा, अन्य प्रोग्रामिंग लैंग्वेज के लिए Google API क्लाइंट लाइब्रेरी, टोकन मैनेज करने के लिए हेल्पर मैथड भी देती हैं. इन्हें क्लाइंट के बीच शेयर किया जा सकता है. साथ ही, इनका इस्तेमाल निचले लेवल की एचटीटीपी लाइब्रेरी में सीधे क्लाइंट हेडर या यूआरएल पैरामीटर के तौर पर में किया जा सकता है.

ऑफ़लाइन टोकन का इस्तेमाल करने वाली सर्वर-साइड स्क्रिप्ट के कुछ उदाहरण:

  • नए वीडियो के लिए डायरेक्ट्री की निगरानी करने वाला डीमन, जो YouTube पर अपने-आप अपलोड होता है
  • एक क्रॉनिक जॉब, जो प्लेलिस्ट को नए कॉन्टेंट के साथ रोज़ अपडेट करता है
  • एक स्क्रिप्ट, जो YouTube Analytics एपीआई के ज़रिए वीडियो डेटा पर नज़र रखती है और कुछ खास इवेंट होने पर चैनल मैनेजर को सूचना देती है. जैसे, देखने का कुल समय, तय सीमा से ज़्यादा हो. ध्यान दें कि इस मामले में सिर्फ़ OAuth 2.0 ही अनुमति देने का तरीका है, क्योंकि Analytics एपीआई ClientLogin का इस्तेमाल नहीं करता.

लंबे समय तक चलने वाले ऐक्सेस टोकन के सेक्शन में, सर्वर साइड प्रोसेस के लिए इस्तेमाल किए जा सकने वाले ऑफ़लाइन टोकन जनरेट करने के बारे में ज़्यादा जानकारी दी गई है.

क्लाइंट आईडी और क्लाइंट सीक्रेट इस्तेमाल करने के सबसे सही तरीके

एक ही क्लाइंट आईडी और सीक्रेट पेयर को शेयर करने वाला कोई भी कोड, एक ही ऐक्सेस टोकन का इस्तेमाल कर सकता है. क्लाइंट आईडी और क्लाइंट सीक्रेट के ऐक्सेस को अपने संगठन के मशीन और डिवाइसों पर चलने वाले कोड तक सीमित रखें.

अपने क्लाइंट आईडी और क्लाइंट सीक्रेट को अपने स्थानीय मोबाइल ऐप्लिकेशन कोड के भाग के रूप में शामिल न करें. मोबाइल डिवाइस से OAuth 2.0 की पुष्टि करने वाले सभी डेवलपर को "इंस्टॉल किए गए ऐप्लिकेशन" क्लाइंट आईडी का इस्तेमाल करना चाहिए. यह आईडी इस बात की पुष्टि करता है कि अनुरोध आपकी टीम की ओर से जारी किए गए ऐप्लिकेशन से ही है.

Android डिवाइसों पर, क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करने के बजाय, आपके ऐप्लिकेशन की पहचान पैकेज नाम और हस्ताक्षर सर्टिफ़िकेट हैश के कॉम्बिनेशन का इस्तेमाल करके की जाती है. iOS डिवाइसों पर, बंडल आईडी और ऐप्लिकेशन स्टोर आईडी का इस्तेमाल किया जाता है. इस जानकारी को पाने से जुड़े आधिकारिक दस्तावेज़ Google API Console सहायता पेज पर देखे जा सकते हैं.

सेवा खाते, YouTube API के साथ काम नहीं करते

सेवा खाते, YouTube डेटा एपीआई कॉल के लिए काम नहीं करते, क्योंकि सेवा खातों के लिए एक जुड़े हुए YouTube चैनल की ज़रूरत होती है. आप सेवा खातों के साथ नए या मौजूदा चैनलों को जोड़ नहीं सकते. अगर YouTube सेवा एपीआई को कॉल करने के लिए, सेवा खाते का इस्तेमाल किया जाता है, तो एपीआई सर्वर गड़बड़ी का मैसेज दिखाता है. इसमें गड़बड़ी को 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 या इस लेख में दिए गए किसी भी उदाहरण के बारे में आपका कोई और सवाल है, तो कृपया StackOverflow पर youtube-api टैग के बारे में पूछें.