में विफल रहता है मैं नवीनतम LightOpenID रिलीज के साथ एक ओपनआईडी लॉगिन सिस्टम को कार्यान्वित करना चाहता हूं। मैं लाइन द्वारा स्रोत कोड लाइन के साथ प्रदान किए गए उदाहरण का परीक्षण कर रहा हूं (मैंने कन्स्ट्रक्टर में $_SERVER['HTTP_HOST']
के साथ localhost
को प्रतिस्थापित किया है)।ओपनआईडी लॉगिन कोड लाइव सर्वर
मुद्दा यह है कि सब कुछ एक निजी नेटवर्क (विंडोज़ विस्टा पर PHP/5.3.6) के अंदर मेरे विकास बॉक्स में ठीक काम करता है लेकिन एचएसपी सार्वजनिक नेटवर्क पर मेरे जीवन सर्वर में सत्यापन हमेशा विफल रहता है (CentOS पर PHP/5.3.3)।
मैंने var_dump()
को चारों ओर जोड़ा है और मैं आपको बता सकता हूं कि कोड की दोनों प्रतियां बिल्कुल वही अनुरोध पैरामीटर उत्पन्न करती हैं और वास्तव में वही प्रतिक्रिया पैरामीटर प्राप्त करती हैं (जीईटी के माध्यम से)। केवल openid.assoc_handle
, openid.sig
, openid.response_nonce
और openid.return_to
के पास अलग-अलग मान हैं, जो मुझे लगता है कि अपेक्षित व्यवहार है।
लेकिन, मेरा देव बॉक्स (जो एक मैं का उपयोग कोई फर्क नहीं पड़ता) OpenID प्रदाता से यह प्राप्त करता है:
is_valid:true
ns:http://specs.openid.net/auth/2.0
... और मेरे लाइव लोमड़ी इस प्राप्त करता है:
is_valid:false
ns:http://specs.openid.net/auth/2.0
वहाँ नहीं कर रहे कोई भी गैर-ASCII वर्ण शामिल नहीं है, इसलिए यह एक एन्कोडिंग समस्या नहीं हो सकता है। मेरी होस्टिंग सेवा में कुछ गड़बड़ होनी चाहिए लेकिन मैं सिर्फ यह नहीं समझ सकता कि क्या।
मुझे संभावित कारणों और समस्या निवारण युक्तियों के बारे में सुझावों की आवश्यकता है।
फिक्स के लिए धन्यवाद। हालांकि डुप्लिकेट किया गया है, मुझे आश्चर्य है कि फ़ाइल_get_contents ($ url, false, $ संदर्भ) के लिए दूसरी कॉल क्यों है जो $ डेटा के बराबर है, काम नहीं करता है? – neobie
मुझे लगता है कि आप केवल सुरक्षा कारणों से सफलतापूर्वक एक कॉल मान्य कर सकते हैं। –
इसे किसी कारण के लिए 'nonce' कहा जाता है। यह एक बार-बार टोकन है। – Maerlyn