Drupal Services OAuth


8

मैं अभी कुछ सप्ताह से इस मुद्दे पर काम कर रहा हूं, और मुझे मेरे जीवन का कोई हल नहीं मिल रहा है। यह तथ्य कि मुझे कोई अच्छा दस्तावेज़ नहीं मिला है (Drupal की वेबसाइट पर, या कहीं और) कोई मदद नहीं है। और यहाँ पहले से ही प्रश्न पुराने हैं (सेवाएं 2.x)।

मैं एक Drupal वाणिज्य समर्थित साइट के लिए एक REST सेवा बनाने का प्रयास कर रहा हूं। अभी के लिए सभी सेवा करना चाहिए आदेश संसाधन पर बुनियादी CRUD संचालन के लिए अनुमति है, और OAuth के साथ सुरक्षित किया जाना चाहिए, OAuth 2.0 आवश्यक है। इसे एक सर्वर पर स्क्रिप्ट के साथ भी बुलाया जाना चाहिए, इसलिए लॉगिन री-डायरेक्ट करना असंभव है (2-पैर वाले प्रमाणीकरण के साथ सब कुछ किया जाता है)।

वर्तमान ढेर है:

  • PHP 5.3.15
  • द्रुपाल 5.१५
  • वाणिज्य किकस्टार्ट प्रोफाइल (7.x-2.0-rc1)
  • सेवाएँ 7.x-3.2
  • औथ 7.x-3.0 + 18-देव
  • OAuth प्रमाणीकरण 7.x-3.2
  • REST सर्वर 7.x-3.2
  • वाणिज्य सेवाएँ 7.x-1.x-dev (यह वह मॉड्यूल है जिसे मैंने अपना कस्टम ऑर्डर कोड जोड़ा है)

अगर मैं एक OAuth PHP लाइब्रेरी का उपयोग करता हूं और मैं हर बार टोकन अनुरोध का उपयोग करता हूं, तो मैं आदेश प्राप्त करने के लिए रिट्रीव / इंडेक्स फ़ंक्शंस प्राप्त कर सकता हूं (मुझे यकीन नहीं है कि वहां क्या हो रहा है, सिवाय इसके कि यह प्रमाणित हो ...)। यदि मैं आदेशों को POST करने की कोशिश करता हूं और एक आदेश बनाता हूं, तो मुझे स्क्रिप्ट के साथ 406 मिलता है, और 401 जब मैं Google Chrome में REST कंसोल से प्रत्यक्ष POST अनुरोध का प्रयास करता हूं, तब भी जब OAuth अक्षम होता है।

यह एक बुरा सपना बना रहा है क्योंकि मुझे नहीं पता कि मेरे बनाने के समारोह के अंदर क्या हो रहा है। मैंने इसके ऑर्डर क्रिएशन लॉजिक को अलग करने की कोशिश की और अनुरोध पेलोड को वापस ले लिया। फिर भी 406/401 त्रुटियां प्राप्त करें।

मुझे लगता है कि मुझे 401 त्रुटियां मिलती हैं क्योंकि आदेशों को एक उपयोगकर्ता प्रमाणीकरण की आवश्यकता होती है (भले ही OAuth सेवा के लिए बंद हो)।

मुझे समझ नहीं आता कि मुझे 406 त्रुटियां क्यों हो रही हैं। मैं आवेदन / json स्वीकार करता हूं, जो कि मेरा REST सर्वर वापस लौटने के लिए तैयार है।

आदेश सृजन तर्क के बारे में टिप्पणी करने से पहले भी आदेश नहीं बनाए जा रहे थे। (जो मैं साइट में कहीं और प्रभावी रूप से उपयोग करता हूं।)

पहले से प्रशंसा।
-टी


पिछले कुछ महीनों में सेवाओं के मॉड्यूल को अपडेट किया गया है ताकि आपको सभी POST, PUT और DELETE अनुरोधों के लिए हेडर में एक टोकन भेजना आवश्यक हो। सुनिश्चित करें कि यह वह समस्या नहीं है जो आप कर रहे हैं: drupal.org/node/2013781 यह GET अनुरोधों को प्रभावित नहीं करता है।
CR47

मेरा सुझाव है कि RESTws की जाँच करें, यह D8 कोर में होगा।
19

जवाबों:


1

प्राप्त अनुरोधों को सत्र प्रमाणीकरण की आवश्यकता नहीं थी, POST, PUT, DELETE को उपयोगकर्ता को जानने के लिए सत्र प्रमाणीकरण की आवश्यकता होती है और जाँच करें कि उसके पास अनुरोध को पूरा करने के लिए सही अनुमति है या नहीं।

Oauth प्रमाणीकरण के कई प्रकार हैं, आपको यह सुनिश्चित करना होगा कि आप उपयोगकर्ता को कोई ऐप नहीं (उदाहरण के लिए) प्रमाणित कर रहे हैं, इसलिए अनुरोध पूरा होने के लिए अधिकृत है।


0

क्या आपने oAuth प्रमाणीकरण को बंद करने पर समान जाँच की है? यदि नहीं, तो अपनी सेवा कॉल पर एक नमूना json obj वापस करने के बाद प्रयास करें।


Drupal उत्तर में आपका स्वागत है! कृपया उत्तर के रूप में एक टिप्पणी या प्रश्न पोस्ट न करें। यह एक मंच नहीं है, और उत्तर का उपयोग कभी भी ओपी से सवाल पूछने के लिए नहीं किया जाएगा। (एक बार जब आपके पास पर्याप्त प्रतिष्ठा हो , तो आपको एक टिप्पणी पोस्ट करने की अनुमति होगी।)
नि: शुल्क कट्टरपंथी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.