
सितंबर 2008
परिचय
डेवलपर के लिए, यह एक बेहतरीन समय है. हमें वेब पर कई ओपन स्टैंडर्ड अपनाए जाते हुए दिख रहे हैं. जैसा कि आपको पता है, Google हमेशा से ही स्टैंडर्ड का बहुत बड़ा समर्थक रहा है. साथ ही, वह ओपन सोर्स कम्यूनिटी को बढ़ावा देता रहा है.
हाल ही में, सभी Google Data API ने OAuth के साथ काम करने की सुविधा को अपनाया है. यह एक ओपन प्रोटोकॉल है. इसका मकसद, डेस्कटॉप और वेब ऐप्लिकेशन के ज़रिए किसी उपयोगकर्ता के निजी डेटा को ऐक्सेस करने के तरीके को स्टैंडर्ड बनाना है. OAuth, एपीआई की पुष्टि करने का एक स्टैंडर्ड और सुरक्षित तरीका है. प्रोग्रामर के तौर पर, हमें यह सिखाया जाता है कि जहां भी मुमकिन हो, कोड का दोबारा इस्तेमाल करें. OAuth की मदद से, डेवलपर को डुप्लीकेट कोड कम लिखना होगा. साथ ही, ऐसे टूल बनाना आसान हो जाएगा जो अलग-अलग कंपनियों की कई सेवाओं के साथ काम करते हैं.
ऑडियंस
इस लेख में यह माना गया है कि आपको Google Data API के बारे में जानकारी है. हालांकि, OAuth के बारे में जानकारी होना ज़रूरी नहीं है. अगर आपको OAuth के बारे में जानकारी चाहिए या आपने हाल ही में इसका इस्तेमाल शुरू किया है, तो यह लेख आपके लिए है. इस लेख में, आपको इन कॉन्सेप्ट के बारे में बुनियादी जानकारी मिलेगी. मैं Google के OAuth को लागू करने के बारे में भी जानकारी दूँगा.
यह दस्तावेज़ उन डेवलपर के लिए भी है जो AuthSub का इस्तेमाल करना जानते हैं. खास तौर पर, बेहतर सुरक्षा के साथ रजिस्टर किए गए मोड में. हम आगे बढ़ते हुए, दोनों प्रोटोकॉल के बीच समानताएं और अंतर हाइलाइट करने की कोशिश करेंगे. अगर आपके पास ऐसे ऐप्लिकेशन हैं जो AuthSub का इस्तेमाल करते हैं, तो इस जानकारी का इस्तेमाल करके OAuth पर माइग्रेट किया जा सकता है. यह ज़्यादा ओपन और मॉडर्न प्रोटोकॉल है.
कुछ शब्दावली
OAuth को समझने के लिए, इससे जुड़ी शब्दावली को समझना ज़रूरी है. OAuth स्पेसिफ़िकेशन और Google के वेब ऐप्लिकेशन के लिए OAuth ऑथेंटिकेशन दस्तावेज़ में कुछ परिभाषाओं का इस्तेमाल किया गया है. इसलिए, आइए जानते हैं कि Google के OAuth को लागू करने के संदर्भ में, हर परिभाषा का क्या मतलब है.
- "OAuth डांस"
यह OAuth की पुष्टि करने/अनुमति देने की पूरी प्रोसेस को बताने के लिए इस्तेमाल किया जाने वाला मेरा अनौपचारिक शब्द है.
- (OAuth) अनुरोध टोकन
यह एक शुरुआती टोकन होता है. इससे Google को पता चलता है कि आपका ऐप्लिकेशन, Google Data API में से किसी एक को ऐक्सेस करने का अनुरोध कर रहा है. OAuth डांस के दूसरे चरण में, उपयोगकर्ता को अपने डेटा का ऐक्सेस मैन्युअल तरीके से देना होता है. यह चरण पूरा होने के बाद, अनुरोध टोकन को अनुमति मिल जाती है.
- (OAuth) ऐक्सेस टोकन
इस प्रोसेस का आखिरी चरण, ऑथराइज़ किए गए अनुरोध टोकन को ऐक्सेस टोकन के लिए बदलना है. आपके ऐप्लिकेशन के पास यह टोकन होने पर, उपयोगकर्ता को OAuth की प्रोसेस से दोबारा नहीं गुज़रना पड़ेगा. हालांकि, ऐसा तब तक होगा, जब तक टोकन रद्द नहीं कर दिया जाता.
AuthSub से मिलता-जुलता:
OAuth ऐक्सेस टोकन, सुरक्षित AuthSub सेशन टोकन की तरह ही होता है. - (OAuth) एंडपॉइंट
ये ऐसे यूआरआई हैं जिनकी ज़रूरत किसी ऐप्लिकेशन की पुष्टि करने और ऐक्सेस टोकन पाने के लिए होती है. कुल तीन कुकी होती हैं. हर कुकी, OAuth प्रोसेस के हर चरण के लिए होती है. Google के OAuth एंडपॉइंट ये हैं:
अनुरोध टोकन पाना: https://www.google.com/accounts/OAuthGetRequestToken
अनुरोध टोकन को अनुमति दें: https://www.google.com/accounts/OAuthAuthorizeToken
ऐक्सेस टोकन में अपग्रेड करने के लिए: https://www.google.com/accounts/OAuthGetAccessToken
AuthSub से समानता:
अनुमति वाले अनुरोध टोकन को ऐक्सेस टोकन के लिए एक्सचेंज करना, एक बार इस्तेमाल किए जा सकने वाले AuthSub टोकन कोhttps://www.google.com/accounts/AuthSubRequestToken
औरhttps://www.google.com/accounts/AuthSubSessionToken
पर, लंबे समय तक इस्तेमाल किए जा सकने वाले सेशन टोकन में अपग्रेड करने जैसा है. इन दोनों में फ़र्क़ यह है कि AuthSub में, शुरुआती अनुरोध टोकन का कॉन्सेप्ट नहीं है. इसके बजाय, उपयोगकर्ताAuthSubRequestToken
अनुमति वाले पेज से टोकन प्रोसेस शुरू करता है. - (OAuth) सेवा देने वाली कंपनी
Google Data API के मामले में, यह सेवा देने वाली कंपनी Google है. आम तौर पर, सेवा देने वाली कंपनी का इस्तेमाल उस वेबसाइट या वेब सेवा के बारे में बताने के लिए किया जाता है जो OAuth एंडपॉइंट उपलब्ध कराती है. OAuth की सेवा देने वाली कंपनी का एक और उदाहरण MySpace है.
- (OAuth) उपभोक्ता
वह प्रोग्राम जो किसी उपयोगकर्ता के डेटा को ऐक्सेस करने की अनुमति मांग रहा है. जैसे, आपका ऐप्लिकेशन. OAuth प्रोटोकॉल का इस्तेमाल कई तरह के क्लाइंट (वेब, इंस्टॉल किया गया, डेस्कटॉप, मोबाइल) के लिए किया जा सकता है.
ध्यान दें: OAuth प्रोटोकॉल, डेस्कटॉप/इंस्टॉल किए गए ऐप्लिकेशन के इस्तेमाल के उदाहरण के साथ काम करता है. हालांकि, Google सिर्फ़ वेब ऐप्लिकेशन के लिए OAuth का इस्तेमाल करता है.
शुरू करें
रजिस्ट्रेशन
Google Data API के साथ OAuth का इस्तेमाल शुरू करने से पहले, आपको कुछ सेटअप करना होगा. सभी OAuth अनुरोधों पर डिजिटल हस्ताक्षर होना ज़रूरी है. इसलिए, आपको पहले अपने डोमेन को रजिस्टर करना होगा और Google पर सार्वजनिक सर्टिफ़िकेट अपलोड करना होगा. इसे करने के तरीके के बारे में ज़्यादा जानने के लिए, वेब पर आधारित ऐप्लिकेशन के लिए रजिस्ट्रेशन और रजिस्टर्ड मोड के साथ इस्तेमाल करने के लिए कुंजियां और सर्टिफ़िकेट जनरेट करना लेख पढ़ें.
हस्ताक्षर करने के अनुरोध
डोमेन रजिस्टर होने के बाद, अनुरोधों पर हस्ताक्षर किए जा सकते हैं. OAuth के सबसे मुश्किल कॉन्सेप्ट में से एक यह है कि oauth_signature
को सही तरीके से कैसे बनाया जाए. साथ ही, सिग्नेचर बेस स्ट्रिंग का कॉन्सेप्ट भी मुश्किल है. बेस स्ट्रिंग वह डेटा होता है जिस पर अपनी निजी कुंजी (RSA_SHA1
का इस्तेमाल करके) से हस्ताक्षर किया जाता है. नतीजा वह वैल्यू होती है जिसे आपने oauth_signature
के लिए सेट किया है.
अनुरोध का उदाहरण
GET
पर उपयोगकर्ता के Google Calendar की सूची http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
बेस स्ट्रिंग का फ़ॉर्मैट | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
बेस स्ट्रिंग का उदाहरण | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
एचटीटीपी अनुरोध का उदाहरण |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
ध्यान दें: यह सिर्फ़ दिखाने के लिए है. आपका oauth_signature
बहुत लंबा होगा.
बेस स्ट्रिंग के बारे में अहम जानकारी:
orderby=starttime
क्वेरी पैरामीटर को, लेक्सिकोग्राफ़िकल बाइट वैल्यू के क्रम में, बाकीoauth_*
पैरामीटर के साथ क्रम से लगाया जाता है.- इस स्ट्रिंग में भी '?' वर्ण नहीं है.
base-http-request-url
वाले हिस्से में, सिर्फ़ यूआरएल के तौर पर कोड में बदला गया बेस यूआरएल होता है:http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
.oauth_token
को दो बार यूआरएल-कोड में बदला गया है.
Authorization
हेडर के बारे में नोट:
Authorization
हेडर मेंoauth_*
पैरामीटर के क्रम से कोई फ़र्क़ नहीं पड़ता.- हेडर में
orderby=starttime
शामिल नहीं है, जबकि बेस स्ट्रिंग में शामिल था. क्वेरी पैरामीटर को अनुरोध यूआरएल के हिस्से के तौर पर बनाए रखा जाता है.
OAuth का इस्तेमाल करके अनुरोधों पर हस्ताक्षर करने के बारे में ज़्यादा जानने के लिए, OAuth अनुरोधों पर हस्ताक्षर करना लेख पढ़ें.
AuthSub से अंतर:
तुलना के लिए, यहां सुरक्षित AuthSub का इस्तेमाल करके वही उदाहरण दिया गया है:
बेस स्ट्रिंग का फ़ॉर्मैट | base_string = http-method http-request-URL timestamp nonce |
---|---|
बेस स्ट्रिंग का उदाहरण |
GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
एचटीटीपी अनुरोध का उदाहरण |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
AuthSub का इस्तेमाल करके अनुरोधों पर हस्ताक्षर करने के बारे में ज़्यादा जानने के लिए, AuthSub अनुरोधों पर हस्ताक्षर करना लेख पढ़ें.
OAuth Playground टूल
मकसद
कुछ उपयोगकर्ताओं का सुझाव है कि OAuth को समझना मुश्किल है. Google के अन्य पुष्टि करने वाले एपीआई की तुलना में, मैं इससे सहमत हूं. OAuth का फ़ायदा तब दिखेगा, जब आपको अपने ऐप्लिकेशन को Google के अलावा अन्य सेवाओं के साथ इंटिग्रेट करना होगा. एक ऐसा पुष्टि करने वाला कोड लिखना जो सेवा देने वाली अलग-अलग कंपनियों और उनके एपीआई पर काम करे, यह मेरे लिए बहुत अच्छा है. प्रोटोकॉल के बारे में अभी जानने से, आपको बाद में फ़ायदा होगा.
OAuth Playground एक टूल है. इसे मैंने डेवलपर की OAuth से जुड़ी समस्याओं को हल करने के लिए बनाया है. Playground का इस्तेमाल इन कामों के लिए किया जा सकता है: समस्याओं को ठीक करना, खुद के लागू किए गए कोड की जांच करना या Google Data APIs के साथ एक्सपेरिमेंट करना.
यह कैसे काम करता है?
- इस इमेज में OAuth की पुष्टि करने का फ़्लो दिखाया गया है. इसमें अनुरोध टोकन फ़ेच करना, टोकन को अनुमति देना, और उसे ऐक्सेस टोकन में अपग्रेड करना शामिल है.
- यह हर अनुरोध के लिए, सही सिग्नेचर बेस स्ट्रिंग दिखाता है.
- हर अनुरोध के लिए सही
Authorization
हेडर दिखाता है. - इस उदाहरण में, पुष्टि किए गए Google डेटा फ़ीड के साथ इंटरैक्ट करने के लिए,
oauth_token
का इस्तेमाल करने का तरीका दिखाया गया है. आपके पासGET
/POST
/PUT
/DELETE
डेटा का विकल्प होता है. - पुष्टि किए गए फ़ीड को सीधे अपने ब्राउज़र में देखें.
- इससे आपको अपने
oauth_consumer_key
(आपका रजिस्टर किया गया डोमेन) और निजी पासकोड को टेस्ट करने की अनुमति मिलती है. - जानें कि आपके
oauth_token
के लिए, Google Data feed की कौनसी सेवाएं उपलब्ध हैं.
डेमो रन
पहला चरण: अपने स्कोप चुनेंसबसे पहले, एक या उससे ज़्यादा स्कोप चुनकर यह तय करें कि आपको किन एपीआई का इस्तेमाल करना है. इस डेमो में, मैं एक ऐसे टोकन का अनुरोध कर रहा हूं जो Blogger और Google Contacts के साथ काम करेगा. AuthSub से मिलती-जुलती सुविधा: |
![]() |
दूसरा चरण: OAuth पैरामीटर और सेटिंग में बदलाव करनाफ़िलहाल, "OAuth पैरामीटर में बदलाव करें" बॉक्स में कोई भी सेटिंग न बदलें. बाद में, अपनी निजी कुंजी का इस्तेमाल करके टेस्ट किया जा सकता है. इसके लिए, ध्यान दें: यहां सिर्फ़
AuthSub से अंतर: |
![]() |
तीसरा से पाँचवाँ चरण: ऐक्सेस टोकन पानाOAuth ऐक्सेस टोकन पाने के लिए, तीन चरण पूरे करने होते हैं. पहला चरण, अनुरोध टोकन वापस पाना है. इससे Google को पता चलता है कि आपका ऐप्लिकेशन, OAuth डांस शुरू कर रहा है. सबसे पहले, "Get the Token" बॉक्स में मौजूद "Request token" बटन पर क्लिक करें. कुछ फ़ील्ड में डेटा अपने-आप भर जाएगा.
|
![]() ![]() |
इसके बाद, "टोकन पाएं" बॉक्स में मौजूद "अनुमति दें" बटन पर क्लिक करें. इस अनुमति वाले पेज पर, "ऐक्सेस दें" बटन पर क्लिक करें. इससे अनुरोध टोकन को अनुमति मिल जाएगी और आपको वापस OAuth Playground पर रीडायरेक्ट कर दिया जाएगा. AuthSub से मिलता-जुलता: AuthSub से अंतर: सलाह: अगर आपको कोई वेब ऐप्लिकेशन लिखना है, तो |
![]() |
आखिर में, "Get the Token" बॉक्स में मौजूद "Access token" बटन पर क्लिक करें. इस कार्रवाई से, अनुमति वाले अनुरोध टोकन को अपग्रेड किया जाता है. इसे लाल रंग के "ऐक्सेस टोकन" लेबल से दिखाया गया है. अगर आपको नया टोकन पाना है, तो OAuth की प्रोसेस को फिर से शुरू करने के लिए, "फिर से शुरू करें" पर क्लिक करें. अब हम कुछ दिलचस्प काम कर सकते हैं! |
![]() |
ऐक्सेस टोकन का इस्तेमाल करना
अब फ़ीड से क्वेरी की जा सकती है. साथ ही, डेटा डाला, अपडेट किया या मिटाया जा सकता है. कृपया इन तीन एचटीटीपी तरीकों का इस्तेमाल करते समय सावधानी बरतें, क्योंकि आप अपने असली डेटा के साथ काम कर रहे हैं!
अहम जानकारी: अपने ऐक्सेस टोकन के लिए उपलब्ध फ़ीड ढूंढने के लिए, "उपलब्ध फ़ीड" बटन पर क्लिक करें.
यहां क्वेरी का एक उदाहरण दिया गया है: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3

इस उदाहरण में, किसी ब्लॉग पर तीन से ज़्यादा पोस्ट नहीं दिखाई जाती हैं. सिंटैक्स हाइलाइट किए गए सेक्शन के नीचे मौजूद "ब्राउज़र में देखें" लिंक पर क्लिक करके, सीधे अपने ब्राउज़र में भी वापस भेजे गए फ़ीड/एंट्री को देखा जा सकता है.
उदाहरण: पोस्ट को अपडेट करने का तरीका
- उस पोस्ट में
<link>
एलिमेंट ढूंढें जिसे आपको अपडेट करना है. इसके साथ rel="edit" मौजूद होगा. यह कुछ ऐसा दिखना चाहिए:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
href यूआरएल को "Google डेटा फ़ीड डालें" इनपुट में चिपकाएं.
- सिंटैक्स हाइलाइट किए गए पैनल में सबसे ऊपर मौजूद, "व्यू प्लेन" पर क्लिक करके, मौजूदा एंट्री के एक्सएमएल को कॉपी करें. सिर्फ़ रिस्पॉन्स बॉडी को कॉपी करें, हेडर को नहीं.
- एचटीटीपी तरीके वाले ड्रॉपडाउन को
PUT
पर सेट करें. - उस ड्रॉपडाउन के नीचे मौजूद, "पोस्ट का डेटा डालें" पर क्लिक करें. इसके बाद, पॉप-अप में
<entry>
एक्सएमएल चिपकाएं. - "लागू करें" बटन पर क्लिक करें.
सर्वर, 200 OK
के साथ जवाब देगा.
अहम जानकारी: edit
लिंक को मैन्युअल तरीके से कॉपी करने के बजाय, 'सिंटैक्स हाइलाइट करें?' चेकबॉक्स से सही का निशान हटाएं. क्वेरी के बाद, आपको एक्सएमएल रिस्पॉन्स बॉडी में मौजूद लिंक पर क्लिक करने का विकल्प मिलेगा.
नतीजा
AtomPub/Atom Publishing Protocol (Google Data APIs का बुनियादी प्रोटोकॉल) और OAuth जैसी टेक्नोलॉजी, वेब को आगे बढ़ाने में मदद करती हैं. ज़्यादा से ज़्यादा साइटें इन स्टैंडर्ड को अपना रही हैं. इसलिए, हम डेवलपर को इसका फ़ायदा मिल रहा है. इससे, बेहतरीन ऐप्लिकेशन बनाना आसान हो जाता है.
अगर आपको OAuth Playground या Google API के साथ OAuth का इस्तेमाल करने के बारे में कोई सवाल पूछना है या कोई टिप्पणी करनी है, तो कृपया G Suite API और Marketplace API के सहायता फ़ोरम पर जाएं.