7

मेरे पास एक node.js एक्सप्रेस ऐप है जो रीस्टफुल एपीआई प्रदान करता है और मैं फेसबुक प्रमाणीकरण के लिए पासपोर्ट का उपयोग कर रहा हूं। मैंने सर्वर की तरफ सभी सीओआरएस कॉन्फ़िगरेशन को सक्षम किया और jQuery अजाक्स के माध्यम से एपीआई का उपभोग करने में सक्षम था। लेकिन फेसबुक प्रमाणीकरण के लिए मुझे निम्न त्रुटि मिल रही है:"जो पास-मूल अनुरोधों के लिए अस्वीकृत है जिसके लिए प्रीफ़लाइट की आवश्यकता है" पासपोर्ट फेसबुक लॉगिन में त्रुटि?

XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…_me%2Cuser_checkins%2Cuser_likes&client_id=12345678&type=web_server', which is disallowed for cross-origin requests that require preflight. 

/auth/facebook endpoint यह है।

app.get('/auth/facebook', 
    passport.authenticate('facebook', { 
     scope: ['email', 'user_about_me', 'user_checkins', 'user_likes'], 
     failureRedirect: users.authFailCallback 
    }), users.signin); 

तो मूल रूप से यह फेसबुक के एपीआई (302) जो CORS की अनुमति नहीं है पर भेज दिया जाएगा। क्या इसे हल करने का कोई तरीका है? या मुझे सर्वर एपीआई से फेसबुक एपीआई को कॉल करने की ज़रूरत है?

+0

मेरा मानना ​​है कि संक्षेप में सीओआरएस (क्रॉस-मूल संसाधन साझाकरण) – Akrikos

+0

सही है । संपादित। धन्यवाद –

उत्तर

4

यह लग रहा है जैसे कि यह एक वेबकिट बग हो सकता है:

https://bugs.webkit.org/show_bug.cgi?id=112471

आप नवीनतम फ़ायरफ़ॉक्स में इस व्यवहार से उत्पन्न होने की कोशिश की?

अभी यह ठीक करने के लिए आपकी सर्वश्रेष्ठ शर्त (2013-12-05) कॉल सर्वर-साइड बनाने के लिए है यदि आप कर सकते हैं। आईई 8 को सीओआरएस स्पेक का समर्थन नहीं करने के कारण आपको शायद आईई 8 संगतता की अनुमति देने के लिए सर्वर साइड अनुरोधों की आवश्यकता होगी। मैं आईई 8 काम करने के लिए एक ही डोमेन प्रॉक्सी का उपयोग करता हूं।

शुभकामनाएं।

0

आप सर्वर एपीआई नहीं कॉल कर सकते हैं जिसके परिणामस्वरूप फ्रंट एंड से 302 (रीडायरेक्शन) होगा। तो आपको उपयोगकर्ता को सीधे सर्वर पर भेजना होगा और उसे वहां से फेसबुक पर रीडायरेक्ट करना होगा, परिणाम को उपयोगकर्ता को सहेजने के बाद उसे

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

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