टोकन समाप्ति - JSON रीस्ट एपीआई - त्रुटि कोड


84

मुझे JSON REST API मिल गया है। एक हैंडशेक है जो आपको एक टोकन देगा जो 15 मिनट के लिए वैध है। उन 15 मिनटों के भीतर आपके द्वारा किए गए सभी कॉल ठीक काम करने चाहिए। 15 मिनट के बाद मैं एक त्रुटि ऑब्जेक्ट (कोड, संदेश, सफलता = गलत शामिल करता हूं) वापस कर रहा हूं, लेकिन मैं यह भी सोच रहा था कि मुझे HTTP त्रुटि कोड क्या चाहिए? और एक HTTP त्रुटि कोड का उपयोग कुछ ग्राहकों को गड़बड़ करेगा? (HTML5, iPhone, Android)। इस परिदृश्य में सबसे अच्छा अभ्यास क्या माना जाता है?


9
+1, बढ़िया सवाल। क्या आपने कभी इसका कोई अच्छा हल खोजा? (btw - नेटफ्लिक्स और लिंक्डइन दोनों एक 401 रिटर्न)।
लास क्रिस्टियनसेन


@MichaelFreidgeim यह प्रश्न पहले से ही पुराना है
FindOutIslamNow

@FindOutIslamNow, "संभावित डुप्लिकेट" एक ही तरह के सवालों को बंद करने और सबसे अच्छे उत्तरों के साथ रखने का एक तरीका है। तारीख जरूरी नहीं है। Meta.stackexchange.com/questions/147643/… देखें यदि आप सहमत हैं कि इसके लिए स्पष्टीकरण की आवश्यकता है, तो कृपया meta.stackexchange.com/questions/281980/…
माइकल फ्रीजिम

जवाबों:


89

आपको एक 401 Unauthorizedस्थिति कोड वापस करना चाहिए । आप फिर से टोकन स्थापित करने के लिए हाइपरमीडिया प्रदान कर सकते हैं

वेब ऐप में क्या होता है, इसके बारे में सोचें। आप बैंकिंग साइट कहते हैं। यदि नहीं तो यह आपको लॉग इन पेज पर भेज देगा। फिर आप लॉग इन करते हैं और एक समय के लिए जाने के लिए अच्छा है। फिर यह समाप्त हो जाता है और चक्र दोहराता है।

सिर्फ एक विचार।


39

rfc6750 के अनुसार - "OAuth 2.0 प्राधिकरण फ्रेमवर्क: बियर टोकन उपयोग", https://tools.ietf.org/html/rfc6750 , p.8, खंड 3.1, संसाधन सर्वर को 401:> लौटना चाहिए

अमान्य_token प्रदान किया गया टोकन समाप्त हो गया है, निरस्त, विकृत, या अन्य कारणों से अमान्य है। HTTP 401 (अनधिकृत) स्थिति कोड के साथ संसाधन SHOULD प्रतिक्रिया देता है। क्लाइंट MAY एक नए एक्सेस टोकन का अनुरोध करता है और संरक्षित संसाधन अनुरोध को पुन: प्रयास करता है।


2
नोट चाहिए बनाम MUST । एक कॉलर के रूप में, 401 पर भरोसा करने में सक्षम होना अच्छा होगा। ओह अच्छी तरह से।
dbreaux

12

FWIW फेसबुक एक कस्टम JSON प्रतिक्रिया के साथ 400 का उपयोग करता है। मैं व्यक्तिगत रूप से कस्टम JSON प्रतिक्रिया के साथ 401 पसंद करूंगा।

यहाँ FB की प्रतिक्रिया निकाय है:

{
  "error": {
    "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463
  }
}

29
कुछ मुझे बताता है कि फेसबुक को अपवाद के रूप में माना जाना चाहिए, न कि विकास के लिए दिशानिर्देश। बस केह रहा हू।
विक्टर आइवेंस

6
क्या यह फेसबुक को एक प्राधिकरण सर्वर या संसाधन प्रदाता के रूप में कॉल करता है? प्राधिकरण सर्वर को 400: tools.ietf.org/html/rfc6749#section-5.2 वापस करना चाहिए , लेकिन संसाधन प्रदाता को 401
माइकल फ्रीजिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.