मुख्य सामग्री पर जाएं

OAuth Echo

OAuth Echo, किसी API के साथ इंटरैक्ट करते समय, किसी तृतीय-पक्ष को OAuth प्राधिकरण सुरक्षित रूप से सौंपने का एक तरीका है। इस इंटरैक्शन में चार पक्ष शामिल होते हैं:
  • उपयोगकर्ता जो किसी विशेष, अधिकृत X ऐप के माध्यम से X का उपयोग कर रहा है
  • Consumer, यानी वह X ऐप जो तृतीय-पक्ष मीडिया प्रदाता (उदा. फ़ोटो-शेयरिंग साइट) के साथ इंटरैक्ट करने का प्रयास कर रहा है
  • Delegator, यानी तृतीय-पक्ष मीडिया प्रदाता
  • सेवा प्रदाता अर्थात स्वयं X  
मूल रूप से, किसी ऐप और उपयोगकर्ता की ओर से X API को भेजने के लिए Delegator हेतु एक अनुरोध तैयार करें। जो अनुरोध सामान्यतः एक signed OAuth अनुरोध होता, उसे HTTP हेडर में जोड़ें और Delegator से कहें कि मध्यवर्ती कार्रवाई पूरी होने के बाद वह उस अनुरोध को X को भेज दे। यहाँ एक उदाहरण है: उपयोगकर्ता एक फ़ोटो अपलोड करना चाहता है। Consumer, POST के साथ Delegator पर upload कॉल करेगा। POST में इमेज होनी चाहिए, लेकिन उसमें HTTP हेडर्स के रूप में दो अतिरिक्त आइटम भी होने चाहिए:
  • x-auth-service-provider — व्यावहारिक रूप से, यह वह realm है जहाँ identity delegation भेजी जानी चाहिए — X के मामले में, इसे https://api.x.com/1.1/account/verify_credentials.json पर सेट करें। iOS5-आधारित X integrations इस URL में एक अतिरिक्त application_id parameter जोड़ेंगी, जिसका उपयोग x-verify-credentials-authorization में प्रयुक्त oauth_signature की गणना के लिए भी किया जाएगा।
  • x-verify-credentials-authorization — Consumer को सभी आवश्यक OAuth parameters बनाने चाहिए, ताकि वह HTTP हेडर में OAuth का उपयोग करते हुए https://api.x.com/1.1/account/verify_credentials.json को कॉल कर सके (उदा. यह ऐसा दिखना चाहिए OAuth oauth_consumer_key=”…”, oauth_token=”…”, oauth_signature_method=”…”, oauth_signature=”…”, oauth_timestamp=”…”, oauth_nonce=”…”, oauth_version=”…” ).  
ध्यान रखें कि पूरे transaction की अवधि इतनी कम होनी चाहिए कि oauth_timestamp अब भी वैध रहे। वैकल्पिक रूप से, हेडर में इन दो parameters को भेजने के बजाय, इन्हें POST में x_auth_service_provider और x_verify_credentials_authorization के रूप में भेजा जा सकता है — इस स्थिति में, OAuth signature base string में parameters को escape करके शामिल करना याद रखें — ठीक वैसे ही जैसे किसी भी अनुरोध में parameters को encode किया जाता है। operations को यथासंभव अलग रखने के लिए HTTP हेडर्स का उपयोग करना सर्वोत्तम है। इस बिंदु पर Delegator का लक्ष्य यह सत्यापित करना है कि मीडिया सहेजने से पहले उपयोगकर्ता वही है, जो वह होने का दावा करता है। जब Delegator को अपनी upload method के माध्यम से ऊपर दिया गया सारा डेटा प्राप्त हो जाए, तो उसे इमेज को अस्थायी रूप से संग्रहीत करना चाहिए, और फिर x-auth-service-provider हेडर में निर्दिष्ट endpoint पर एक कॉल बनानी चाहिए — इस मामले में, https://api.x.com/1.1/account/verify_credentials.json, और इसके लिए वही OAuth authentication हेडर उपयोग करना चाहिए, जो Consumer ने x-verify-credentials-authorization हेडर में प्रदान किया था।  

OAuth Echo के लिए सर्वोत्तम प्रथाएँ

लुकअप करने के लिए x-auth-service-provider द्वारा दिए गए URL का उपयोग करें, not किसी हार्ड-कोड किए गए मान का। उदाहरण के लिए, Apple iOS सभी OAuth अनुरोधों में एक अतिरिक्त application_id पैरामीटर जोड़ता है, और OAuth Echo के हर चरण में इसकी मौजूदगी बनी रहनी चाहिए। OAuth authorization वाले हिस्से के लिए, x-verify-credentials-authorization में मौजूद हेडर मान लें और सेवा प्रदाता को की जाने वाली कॉल के लिए उसे अलग Authorization हेडर में रखें। एहतियात के तौर पर, यह भी सुनिश्चित करें कि x-auth-service-provider में दिया गया मान वही है जो होना चाहिए।
  • अगर सेवा प्रदाता HTTP 200 लौटाता है, तो सब ठीक है। Delegator को इमेज को स्थायी रूप से संग्रहीत करना चाहिए, एक URL जनरेट करना चाहिए, और उसे लौटाना चाहिए।
  • अगर सेवा प्रदाता HTTP 200 नहीं लौटाता है, तो इमेज को त्याग दें और फिर Consumer को एक त्रुटि लौटाएँ।