2015-06-14 10 views
18

मेरा आईओएस मोबाइल ऐप उन सेवाओं का उपभोग करता है जो OAuth2.0 प्रोटोकॉल के साथ लागू होते हैं। OAuth एक्सेस टोकन रीफ्रेश टोकन और expires_in फ़ील्ड के साथ आता है। मैंने रीफ्रेश टोकन को सहेजा और मेरे ऐप में टोकन समाप्ति समय तक पहुंचा लेकिन इसका उपयोग करने के बारे में कोई अच्छा विचार नहीं है।ओथ टोकन की समयसीमा समाप्त होने पर कैसे पहचानें?

  • तो expires_in का उपयोग करने का सामान्य और सर्वोत्तम अभ्यास क्या है?
  • मैं कैसे पहचान सकता हूं कि मेरा एक्सेस टोकन समाप्त हो गया है?
  • क्या कोई आम वेब सेवा त्रुटि प्रारूप है जो कहता है कि मेरा एक्सेस टोकन समाप्त हो गया है?

उत्तर

29

ओएथ 2.0 टोकन रीफ्रेश पर यहां जानकारी है।

परिभाषा में समाप्त हो

OAuth 2.0 मानक, RFC 6749, समय सीमा समाप्ति के लिए सेकंड की संख्या के रूप में परिभाषित करता है expires_in क्षेत्र:

expires_in: अनुशंसित। पहुंच टोकन के सेकंड में जीवन भर। उदाहरण के लिए, मान "3600" दर्शाता है कि पहुंच टोकन पहुंचने के समय से एक घंटे में समाप्त हो जाएगी। यदि छोड़ा गया है, तो प्राधिकरण सर्वर को अन्य साधनों के माध्यम से समाप्ति समय प्रदान करना चाहिए या डिफ़ॉल्ट मान दस्तावेज करना चाहिए।

टोकन ताज़ा हैंडलिंग: विधि 1

एक वैध access_token, expires_in मूल्य, refresh_token, आदि प्राप्त करने पर, ग्राहकों को एक समय समाप्ति भंडारण और प्रत्येक अनुरोध पर यह देख कर इसकी संसाधित कर सकें। यह निम्न चरणों का उपयोग किया जा सकता है:

  1. परिवर्तित expires_in एक समय सीमा समाप्त हो-समय पर (युग, आईएसओ datetime, आदि)
  2. दुकान प्रत्येक संसाधन अनुरोध पर समय
  3. समय सीमा समाप्त हो, के खिलाफ वर्तमान समय की जाँच समय सीमा समाप्त हो और अगर access_token एक नया access_token प्राप्त करने के लिए

इसके अलावा समाप्त हो गया है संसाधन अनुरोध से पहले एक टोकन रीफ्रेश अनुरोध बनाने के लिए, आप एक समय समाप्ति च के साथ एक नया refresh_token प्राप्त हो सकता है भविष्य में आगे। यदि आपको यह प्राप्त होता है, तो आपको अपने सत्र के जीवन को बढ़ाने के लिए नया refresh_token स्टोर करना चाहिए।

टोकन ताज़ा हैंडलिंग: विधि 2

टोकन ताज़ा से निपटने का एक अन्य तरीका मैन्युअल रूप से अमान्य टोकन त्रुटि प्राप्त करने के बाद ताज़ा करने के लिए है। यह पिछले दृष्टिकोण या स्वयं के साथ किया जा सकता है।

यदि आप एक समाप्त access_token का उपयोग करने का प्रयास करते हैं और आपको एक अवैध टोकन त्रुटि मिलती है, तो आपको टोकन रीफ्रेश करना चाहिए (यदि आपका रीफ्रेश टोकन अभी भी वैध है)। चूंकि अलग-अलग सेवाएं समय-समय पर समाप्त टोकन के लिए अलग-अलग त्रुटि कोड का उपयोग कर सकती हैं, इसलिए आप प्रत्येक सेवा के लिए कोड का ट्रैक रख सकते हैं या सेवाओं में टोकन रीफ्रेश करने का एक आसान तरीका केवल 4xx त्रुटि का सामना करने पर एक ताज़ा करने का प्रयास करना है।

अमान्य पहुंच टोकन त्रुटियाँ

नीचे लोकप्रिय सेवाओं से कुछ त्रुटि कोड हैं:

  1. Facebook: Error 467 Invalid access token - पहुँच टोकन, समाप्त हो गई है रद्द कर दिया गया, या अन्यथा वह अमान्य है - की अवधि समाप्त हो पहुंच टोकन को संभाल।
  2. LinkedIn: Error 401 Unauthorized
  3. PayPal: Error 401 Unauthorized

ताज़ा टोकन का समय समाप्त होने

यदि आपका refresh_token भी समाप्त हो गया है, आप फिर से प्राधिकरण की प्रक्रिया के माध्यम से जाने की जरूरत होगी।

+0

हाय, आपके उत्तर के लिए बहुत धन्यवाद! समाप्ति समय की जांच करते समय, यदि उपयोगकर्ता डिवाइस समय बदलता है तो क्या होगा? क्या यह अक्सर एक्सेस टोकन को रीफ्रेश करने का नेतृत्व नहीं करेगा? और अमान्य टोकन त्रुटि की जांच के संबंध में, क्या आपको प्रतिक्रिया कोड और त्रुटि प्रारूप पर कोई विचार है कि oAuth सर्वर वापस आ जाएगा? और क्या यह सभी oAuth सर्वरों के लिए त्रुटि प्रतिक्रिया समान होगी? – XiOS

+0

अक्सर डिवाइस समय परिवर्तन होने के लिए कुछ उपयोग के मामले क्या हैं? टाइमज़ोन परिवर्तन स्वचालित रूप से संभाला जाना चाहिए। चूंकि अमान्य टोकन त्रुटि कोड मानक में परिभाषित नहीं किया गया है, इसलिए विभिन्न सेवाओं ने अब ऊपर सूचीबद्ध विभिन्न त्रुटि कोड चुने हैं। उल्लेख किए गए 4xx त्रुटि पर एक रीफ्रेश करने का प्रयास करने के लिए एक सरल रीफ्रेश दृष्टिकोण हो सकता है। – Grokify

संबंधित मुद्दे