आप ट्विटर (या किसी अन्य OAuth प्रदाता) को नहीं बदल सकते हैं, वे सभी एक डोमेन में केवल एक कॉलबैक प्रदान करते हैं। एक आसान समाधान http://domain.com से http://www.domain.com तक सभी अनुरोधों को फिर से रूट करना है, इसलिए सभी आगंतुक प्रमाणीकरण से पहले www.domain.com पर समाप्त होते हैं। आप अपने DNS पर या एक req.header रीडायरेक्ट सर्वर साइड के साथ ऐसा करने में सक्षम होना चाहिए:
app.get('/*', function(req, res, next) {
if (req.headers.host.match(/^www/) !== null) {
res.redirect('http://' + req.headers.host.replace(/^www\./, '') + req.url);
} else {
next();
}
})
this answer से कॉपी किया गया।
जब passport.js से प्रमाणीकृत करने, कॉलबैक यूआरएल निर्दिष्ट करने के लिए प्रयास करें:
passport.use(new TwitterStrategy({
consumerKey: auth_keys.twitter.consumerKey,
consumerSecret: auth_keys.twitter.consumerSecret,
callbackURL: auth_keys.twitter.callbackURL
},
function(token, tokenSecret, profile, done) {
process.nextTick(function() {
User.twitterAuth({ profile: profile }, function (err, user) {
return done(err, user);
});
});
}
));
और यकीन है कि callbackURL बिल्कुल वैसा ही ट्विटर में विन्यस्त के रूप में है या नहीं। यदि आप स्थानीयहोस्ट पर विकास के लिए नोड चला रहे हैं, तो दो अलग-अलग कुंजी फ़ाइलों को आज़माएं और 127.0.0.1:3000 के साथ कॉलबैक पते के रूप में ट्विटर पर एक और प्रमाणीकरण ऐप्स बनाएं। आप देव और उत्पादन के लिए मुख्य फाइलों को स्विच कर सकते हैं:
if (app.get('env') == 'development') {
auth_keys = require('./lib/keys_dev');
}
if (app.get('env') == 'production') {
auth_keys = require('./lib/keys_live');
}
कुछ कोड दिखाएं, अधिमानतः न्यूनतम परीक्षण केस। – ebohlman
यह एक कोड मुद्दा नहीं है। यह twitters auth mechanism है, जो केवल एक होस्टनाम, आईआईआरसी को कॉलबैक की अनुमति देता है। आपको कोई कोड देखने की आवश्यकता नहीं है। – EhevuTov
भले ही यह ऑथ तंत्र के साथ कोई समस्या है, आंतरिक सर्वर त्रुटि पर कुछ और विवरण, जैसे कंसोल आउटपुट बेहतर उत्तर प्रदान कर सकता है। – Patrick