2012-12-08 15 views
6

मैं django-social-auth काम करने की कोशिश कर दीवार के खिलाफ अपने सिर को टक्कर लगी हूं। मेरा देव सर्वर मेरे काम पर एक निजी नेटवर्क में एक सर्वर है, जो 10.0.0। * आईपी एड्रेस द्वारा एक्सेस किया गया है। हमारे पास इस सर्वर पर कई django ऐप्स चल रहे हैं।django-social-auth redirect_uri अमान्य

# Perceptual 
location /perceptual/static/ { 
     alias /opt/perceptual/perceptual/static/; 
} 
location /perceptual/ { 
     proxy_pass http://127.0.0.1:8001; 
} 

मैं इस के साथ मेरी स्थिर निर्देशिका से बाहर एक backbone.js एप्लिकेशन चल रहा हूँ: यहाँ config मैं इस अनुप्रयोग के लिए है है। तो, मैं 10.0.0.54/perceptual/static/ पर जा सकता हूं, और अपना रीढ़ की हड्डी ऐप प्राप्त कर सकता हूं।

अब, मेरे पास मेरी सेटिंग्स फ़ाइल में मेरा फेसबुक APP_ID और FACEBOOK_API_SECRET है, सभी सही तरीके से कॉन्फ़िगर किया गया है। मेरे पास वास्तविक मशीन (देव सर्वर नहीं) पर मेरी/etc/hosts फ़ाइल में एक पंक्ति भी है जो myapp.com से 10.0.0.54, और ऐप डोमेन और साइट यूआरएल के लिए मेरी फेसबुक ऐप कॉन्फ़िगरेशन इस तरह दिखेगा:

App Domains: perceptual.com 
Site URL: http://perceptual.com 

समस्या है, जब भी मैं यह मुझे इस त्रुटि देता है perceptual.com/perceptual/static/login/facebook/ पर जाएँ: Facebook Error (django-social-auth)

यहाँ मेरी URL वह कैसा दिखता है मुझे वह त्रुटि मिलती है: https://www.facebook.com/dialog/oauth?scope=email&state=PC0OhXnEuaW2wcUuINO0rMSMAtVDuMbn&redirect_uri=http%3A%2F%2F127.0.0.1%3A8001%2Fperceptual%2Fcomplete%2Ffacebook%2F%3Fredirect_state%3DPC0OhXnEuaW2wcUuINO0rMSMAtVDuMbn&client_id=419178148154217

तो आप यूआरएल से देख सकते हैं कि मेरा रीडायरेक्ट_री http://localhost:8001 है - लेकिन मैं नहीं चाहता कि यह स्पष्ट रूप से हो। जैसे ही मैं perceptual.com के लिए इसे बदल के रूप में, यह थोड़ा आगे हो जाता है: तो फिर मैं इस त्रुटि मिलती है:

AuthFailed at /perceptual/complete/facebook/ 
Authentication failed: There was an error authenticating the app 

यहाँ मेरी traceback, if it helps

इस बिंदु पर, मैं अटक कर रहा हूँ - मैं कैसे मिलता है मेरा सर्वर रीडायरेक्ट_री को कुछ ऐसा करने के लिए जो फेसबुक संभाल सकता है, 127.0.0.1:8000 के बजाय? मेरा अनुमान है कि यह Django से आ रहा है, लेकिन मुझे यकीन नहीं है कि इसे कैसे बदला जाए। फिर, एक बार यह तय हो जाने पर, यह अभी भी पूरी तरह प्रमाणित नहीं हो सकता है, और उपर्युक्त त्रुटि प्राप्त करता है। किसी भी तरह की सहायता का स्वागत किया जाएगा। बहुत बहुत धन्यवाद!

उत्तर

11

django-social-auth का उपयोग redirect_uri पैरामीटर बनाने के लिए करता है। build_absolute_uri() के लिए django कोड की जांच करना यह get_host() पर कॉल करता है जो HTTP_X_FORWARDED_HOST, HTTP_HOST या SERVER_NAME के लिए जांच करता है।

अपने स्थान नुस्खा में उन शीर्षकों में से किसी एक को परिभाषित करने का प्रयास करें (मुझे लगता है कि इसके लिए proxy_set_header है)।

+5

धन्यवाद, ओमाब! मैं इस कॉन्फ़िगरेशन को मेरी nginx कॉन्फ़िगरेशन फ़ाइल में सेट करने में सक्षम था: 'proxy_set_header एक्स-फॉरवर्डेड-होस्ट 'xxxxx.com';' और मेरी django सेटिंग्स.py फ़ाइल में: 'USE_X_FORWARDED_HOST = True' और यह सब मिला काम कर रहे। एक बार फिर धन्यवाद! –

+1

@ जेम्ससस्मुसेन हाँ, 'USE_X_FORWARDED_HOST = True' वह छोटा था जिसे मैं भी याद कर रहा था। धन्यवाद। –

+0

यहां रिवर्स प्रॉक्सी स्थिति से संबंधित सेटिंग्स भी हैं: http://django-social-auth.readthedocs.org/en/latest/configuration.html#processing-redirects-and-urlopen –

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