OAuth Echo
- उपयोगकर्ता जो किसी विशेष, अधिकृत X ऐप के माध्यम से X का उपयोग कर रहा है
- Consumer, यानी वह X ऐप जो तृतीय-पक्ष मीडिया प्रदाता (उदा. फ़ोटो-शेयरिंग साइट) के साथ इंटरैक्ट करने का प्रयास कर रहा है
- Delegator, यानी तृतीय-पक्ष मीडिया प्रदाता
- सेवा प्रदाता अर्थात स्वयं X
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=”…” ).
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 को एक त्रुटि लौटाएँ।