दो दिन और एक लाख की कोशिश करता है जब फेसबुक NodeJS/एक्सप्रेस में पासपोर्ट का उपयोग कर के साथ एक उपयोगकर्ता को प्रमाणित करने की कोशिश कर CORS सक्षम करने के लिए किया गया है सक्षम करें।कोणीय/नोड/एक्सप्रेस/पासपोर्ट क्रॉस-डोमेन समस्या - CORS पासपोर्ट फेसबुक प्रमाणीकरण
XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…%3A8080%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=598171076960591.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8080' is therefore not allowed access.
मार्गों का उपयोग मैं
कि के रूप में सरल कर रहे हैं::
// =====================================
// FACEBOOK ROUTES =====================
// =====================================
// route for facebook authentication and login
app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));
// handle the callback after facebook has authenticated the user
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
successRedirect : '/home',
failureRedirect : '/login'
}));
यह कैसे मार्ग मेरी AngularJS फ़ाइल पर कहा जाता है (मैं
त्रुटि मैं क्रोम पर मिलता है सच):
$http.get('/auth/facebook')
.success(function(response) {
}).error(function(response){
});
मैं एक दर्जन से अधिक समाधान है कि मैं यहां पाया की कोशिश की है 'भी स्थापित करने की कोशिश की withCredentials किया है StackOverflow और अन्य मंचों पर।
मैं routes.js फाइलों पर पर इस जोड़ने मेरी मार्गों से पहले की कोशिश की:
app.all('*', function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header("Access-Control-Allow-Headers", "Content-Type,X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name"); res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS'); res.header('Access-Control-Allow-Credentials', true); if ('OPTIONS' == req.method) { res.send(200); } else { next(); } });
मैं server.js फ़ाइल पर यह जोड़ने की कोशिश की (ध्यान दें कि मैं setHeader लेकिन मैं करने के लिए शीर्ष लेख बदल दोनों की कोशिश की 'किया है):
app.use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type,X-Requested-With'); res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS'); res.setHeader('Access-Control-Allow-Credentials', true); if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }); require('./app/routes.js')(app, passport);
मैं अपने app.js फ़ाइल पर यह जोड़ने की कोशिश की (AngularJS विन्यास):
$httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; $httpProvider.defaults.withCredentials = true;
वैसे भी, मुझे नहीं पता कि और क्या करना है। ऑनलाइन जो कुछ भी मैंने पाया वह काम नहीं किया। क्या AngularJS रूटिंग का उपयोग कर मेरे साथ कुछ करने का मौका है? मुझे कोई कारण नहीं दिखता कि इससे कोई फर्क नहीं पड़ता, लेकिन मैं थोड़े अनुमानों से बाहर भाग गया।
मेरे स्थिति बहुत इस एक के समान है: Angular/Node/Express/Passport - Issues when connecting to facebook(CORS)
अग्रिम धन्यवाद!
संभव डुप्लिकेट [? कैसे एक्सप्रेस/NodeJS में CORS अनुमति देने के लिए] (http://stackoverflow.com/questions/7067966/how-to-allow-cors-in-express -nodejs) –
मुझे पता है कि बहुत सारे प्रश्न हैं, और मैंने लगभग सभी को देखा है। दुर्भाग्य से, मैंने जिन समाधानों का प्रयास किया है, उनमें से कोई भी अब तक काम नहीं कर रहा है ... –
आप एक ही समय में 'एक्सेस-कंट्रोल-अनुमति-प्रमाण-पत्र: सत्य' और 'पहुंच-नियंत्रण-अनुमति-उत्पत्ति: *' दोनों का उपयोग नहीं कर सकते हैं। आपके मामले के लिए, आपको '*' के बजाय 'पहुंच-नियंत्रण-अनुमति-उत्पत्ति: लोकलहोस्ट: 8080' सेट करना चाहिए। – wuct