में पासपोर्ट मिडलवेयर के साथ ट्विटर प्रमाणीकरण मैं नोड.जेएस (एक्सप्रेस फ्रेमवर्क का उपयोग करके) वाली वेबसाइट विकसित कर रहा हूं। ट्विटर प्रमाणीकरण का उपयोग करने के लिए, मैं passport
मॉड्यूल (http://passportjs.org) का उपयोग कर रहा हूं, और ट्विटर के लिए उनके रैपर को passport-twitter
कहा जाता है।नोड
मेरे सर्वर साइड स्क्रिप्ट है:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, passport = require('passport')
, keys = require('./oauth/keys')
, TwitterStrategy = require("passport-twitter").Strategy;
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('foo'));
app.use(express.session());
// Initialize Passport! Also use passport.session() middleware, to support
// persistent login sessions (recommended).
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
passport.use(new TwitterStrategy({
consumerKey: keys.twitterConsumerKey,
consumerSecret: keys.twitterConsumerSecret,
callbackURL: "http://local.host:3000/auth/twitter/callback"
},
function(token, tokenSecret, profile, done) {
User.findOrCreate({ twitterId: profile.id }, function (err, user) {
if (err) { return done(err); }
else { return done(null, user); }
});
}
));
app.get('/', routes.index);
app.get('/contacts', routes.contacts);
app.get('/cv', routes.cv);
app.get('/projects', routes.projects);
app.get('/users', user.list);
// Redirect the user to Twitter for authentication.
// When complete, Twitter will redirect the user back to the
// application at /auth/twitter/callback
app.get('/auth/twitter', passport.authenticate('twitter'));
// Twitter will redirect the user to this URL after approval. Finish the
// authentication process by attempting to obtain an access token. If
// access was granted, the user will be logged in. Otherwise,
// authentication has failed.
app.get('/auth/twitter/callback',
passport.authenticate('twitter',
{
successRedirect: '/',
failureRedirect: '/login'
}
)
);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
यूआरआई लॉगइन करने के लिए जुड़े http://local.host:3000/auth/twitter
है;
Express
500 ReferenceError: User is not defined
मैं इस समस्या को कैसे हल कर सकते हैं: जब मैं इसे पर जाते हैं, ट्विटर मुझे मेरी खुद की वेबसाइट के साथ अपना खाता जोड़ने लेकिन, इस चरण के बाद, निम्न त्रुटि तब होती है के लिए प्रमाणीकरण रूप से पता चलता? सर्वश्रेष्ठ संबंध, वीआई।
वर के बजाय उपयोगकर्ता उपयोगकर्ता var:
अनिवार्य रूप से इस मिडलवेयर बनाने? – chovy