उपभोक्ता से
(यानी आपके आवेदन) की ओर, OAuth2 प्रक्रिया को दो भागों में विभाजित किया जा सकता:
- OAuth2 प्रदाता के "अधिकृत करें" यूआरएल
- के आदान-प्रदान करने के लिए अपने आवेदन से रीडायरेक्ट "कोड" पहुँच टोकन
# 1 आप सभी परीक्षण की आवश्यकता के लिए के लिए OAuth2 प्रदाता द्वारा दिया है कि जब आप मार्ग कि प्रमाणीकरण प्रक्रिया शुरू होता है आह्वान प्रतिसाद दिया OAuth2 प्रदाता के लिए एक रीडायरेक्ट है। यह आसानी से फ्लास्क के test client के साथ पूरा किया जाता है। प्रतिक्रिया में आपके OAuth2 प्रदाता के लिए प्राधिकृत URL पर 302 का एक स्टेटस कोड होना चाहिए और "स्थान" हेडर सेट होना चाहिए। ध्यान दें कि आपको प्रदाता होने की आवश्यकता नहीं है, आप केवल परीक्षण कर रहे हैं कि प्रतिक्रिया एक रीडायरेक्ट है, लेकिन आपको वास्तव में रीडायरेक्ट करने की आवश्यकता नहीं है।
# 2 के लिए परीक्षण में थोड़ा और अधिक शामिल है। आपके फ्लास्क ऐप में एक विशेष यूआरएल है जिसे ओएथ 2 प्रदाता के लिए "रीडायरेक्ट यूआरएल" के रूप में नामित किया गया है ताकि आपको प्राधिकरण कोड वापस भेज दिया जा सके। आप इस यूआरएल को सिर्फ नकली परीक्षण क्लाइंट के साथ एक नकली कोड पास कर सकते हैं और इसमें कोई समस्या नहीं है।
समस्या यह है कि है कि आपके रीडायरेक्ट URL संभालती दृश्य समारोह में आप पहुँच टोकन के प्रमाणन कोड का आदान प्रदान करने OAuth2 प्रदाता को लागू करने की जरूरत है, और इस तुल्यकालिक किया जाता है। ऐसा करने के लिए आप app.config['TESTING']
जाँच करने के लिए और उस मामले में वास्तविक अनुरोध छोड़ सकते हैं और एक नकली प्रतिक्रिया है कि एक नकली पहुँच टोकन शामिल के साथ बदलने के लिए है इस लेन-देन को रोकने के लिए।
तब से
पर आप भी नकली OAuth2 प्रदाता में कोई अतिरिक्त कॉल कि पहुँच टोकन भेज डेटा का अनुरोध करने की आवश्यकता होगी।
यदि आप अपने फ्लास्क ऐप में ओएथ 2 क्लाइंट लाइब्रेरी का उपयोग कर रहे हैं तो अपने आवेदन में परीक्षण अपवादों के बिना नकली प्रदाता बनाना आसान हो सकता है। मेरे मामले में मैं rauth का उपयोग कर रहा हूं, और इसके लिए मैंने OAuth2Service
कक्षा का उप-वर्ग बनाया है जो उचित तरीकों को ओवरराइड करता है और वास्तविक सत्र से मैंने जो नकली डेटा कैप्चर किया है, उसके साथ प्रतिक्रिया करता है। फिर मेरे परीक्षण सेटअप में मैं सिर्फ नकली सेवा बनाता हूं और एप्लिकेशन को यह सोचने में बेवकूफ़ बना दिया जाता है कि यह एक वास्तविक सर्वर से बात कर रहा है।
मुझे उम्मीद है कि इससे मदद मिलती है।
आमतौर पर, "बाहरी" ओथ (सेवा ट्विटर, एवरोटोट आदि के लिए) हमारे परीक्षण करने के लिए एक सानबॉक्स प्रदान करते हैं। क्या आपको उस उद्देश्य के लिए कोई नहीं मिला है? –
लेकिन फिर भी उन्हें आपके खिलाफ प्रमाणित करने की आवश्यकता होगी? बस वे आपको परीक्षा के लिए डमी प्रमाण पत्र भेजते हैं? –
हां निश्चित रूप से उन्हें इसकी आवश्यकता है।हाँ वे एक डमी प्रमाण पत्र या समकक्ष लौट आए। Evernote, उदाहरण के लिए, केवल परीक्षण उद्देश्य के लिए विशेष कुंजी प्रदान करता है। और यह एपीआई के साथ हमारे देव को खत्म करने की चाल है। एक बार जब आप उत्पादन में धक्का देने के लिए अपने देव को घुमाएंगे, तो आपको उत्पादन के लिए नई एपीआई कुंजी मिल जाएगी। –