Skip to main content

OAuth 1.0a

X डेवलपर प्लेटफ़ॉर्म पर कई एंडपॉइंट, किसी X खाते की ओर से कार्रवाई करने या API अनुरोध भेजने के लिए OAuth 1.0a विधि का उपयोग करते हैं। उदाहरण के लिए, यदि आपके पास X डेवलपर ऐप है, तो आप किसी भी X खाते की ओर से API अनुरोध कर सकते हैं, बशर्ते वह उपयोगकर्ता आपके ऐप को प्रमाणित करे। कृपया ध्यान दें: यदि आप HMAC-SHA1 और percent encoding जैसी अवधारणाओं से परिचित नहीं हैं, तो हम अनुशंसा करते हैं कि आप नीचे दिए गए “उपयोगी टूल” अनुभाग को देखें, जिसमें कुछ API क्लाइंट सूचीबद्ध हैं जो प्रमाणीकरण प्रक्रिया को काफी सरल बना देते हैं।

मुख्य अवधारणाएँ

कुंजियों और टोकन के साथ अनुरोध पर हस्ताक्षर करना

आपको authorization header में जनरेट की गई कई कुंजियाँ और टोकन भेजकर हर API अनुरोध पर हस्ताक्षर करना होता है। शुरू करने के लिए, आप अपने X डेवलपर ऐप के विवरण पेज पर कई कुंजियाँ और टोकन जनरेट कर सकते हैं, जिनमें निम्नलिखित शामिल हैं:
API कुंजी और secret:

oauth_consumer_key

oauth_consumer_secret
इन्हें उस उपयोगकर्ता नाम और पासवर्ड की तरह समझें, जो API अनुरोध करते समय आपके X डेवलपर ऐप का प्रतिनिधित्व करते हैं।
एक्सेस टोकन और secret:

oauth_token

oauth_token_secret
एक्सेस टोकन और एक्सेस टोकन secret, उपयोगकर्ता-विशिष्ट credentials हैं जिनका उपयोग OAuth 1.0a API अनुरोधों को प्रमाणित करने के लिए किया जाता है। ये बताते हैं कि अनुरोध किस X खाते की ओर से किया जा रहा है।

अगर आप चाहते हैं कि आपका ऐप आपके डेवलपर खाते से जुड़े उसी X खाते की ओर से अनुरोध करे, तो आप [X डेवलपर ऐप के]/resources/fundamentals/developer-apps) विवरण पेज पर अपना एक्सेस टोकन और टोकन secret खुद जनरेट कर सकते हैं।

अगर आप किसी दूसरे उपयोगकर्ता के लिए एक्सेस टोकन जनरेट करना चाहते हैं, तो नीचे “उपयोगकर्ताओं की ओर से अनुरोध करना” देखें।

उपयोगकर्ताओं की ओर से अनुरोध करना

सिग्नेचर बनाते समय, आपको एक्सेस टोकन के ऐसे सेट की ज़रूरत होती है जो उस उपयोगकर्ता का प्रतिनिधित्व करता हो, जिसकी ओर से आप अनुरोध करने वाले हैं। आप उस X खाते का प्रतिनिधित्व करने वाले एक्सेस टोकन का एक सेट ऐप के विवरण पेज, से जनरेट कर सकते हैं जो X डेवलपर ऐप का मालिक है। लेकिन अगर आप किसी दूसरे X खाते की ओर से अनुरोध करना चाहते हैं, तो उस खाते के मालिक को 3-legged OAuth flow के हिस्से के रूप में अपने खाते में साइन इन करके आपको एक्सेस देना होगा। इस प्रक्रिया के परिणामस्वरूप एक्सेस टोकन (oauth_token and oauth_token_secret) का एक सेट मिलता है, जिसका उपयोग OAuth 1.0a अनुरोध करने के लिए किया जा सकता है। जब आपके पास ये कुंजी और tokens हों, तो आप या तो शुरू से सिग्नेचर बना सकते हैं। हम ऐसा करने की अनुशंसा नहीं करते, जब तक कि आपको ठीक-ठीक न पता हो कि आप क्या कर रहे हैं, या आप नीचे बताए गए किसी टूल का उपयोग ऐसे endpoint पर अनुरोध करने के लिए न कर रहे हों, जिसके लिए OAuth 1.0a आवश्यक है। संदर्भ के लिए, यहां authorization header में पास किए गए सभी जनरेट किए गए tokens के साथ signed cURL request का एक उदाहरण दिया गया है:
curl --request POST \
  --url 'https://api.x.com/1.1/statuses/update.json?status=Hello%20world' \
  --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
नोट: उपयोगकर्ता एक्सेस टोकन संवेदनशील होते हैं और इन्हें बहुत सावधानी से सुरक्षित रखा जाना चाहिए। जब एक्सेस टोकन जनरेट किए जाते हैं, तो जिस उपयोगकर्ता का वे प्रतिनिधित्व करते हैं, वह इस भरोसे के साथ आपकी ऐप को सौंपे गए इन token के सुरक्षित रहने की अपेक्षा करता है। यदि API कुंजी और उपयोगकर्ता एक्सेस टोकन, दोनों की सुरक्षा से समझौता हो जाता है, तो आपकी ऐप के माध्यम से निजी जानकारी और खाते की सुविधाओं तक पहुंच उजागर हो सकती है। हम आपको कुंजी और एक्सेस टोकन को सुरक्षित रखने के बारे में और जानने के लिए प्रोत्साहित करते हैं।

उपयोगी टूल

किसी अनुरोध पर हस्ताक्षर करने की प्रक्रिया जटिल है। हम सलाह देते हैं कि आप ऐसी API क्लाइंट लाइब्रेरी का उपयोग करें, जो प्रमाणीकरण टोकन का बड़ा हिस्सा अपने-आप जनरेट कर दे:
Postmanएक API क्लाइंट, जो आपको REST API अनुरोध बनाने और भेजने देता है। इस टूल के बारे में अधिक जानने के लिए हमारा “Postman के साथ शुरुआत करना” ट्यूटोरियल पढ़ें।
InsomniaInsomnia एक REST API Client है, जिसमें Mac, Windows, और Linux के लिए cookie management, environment variables, code generation, और authentication जैसी सुविधाएँ शामिल हैं।