Spe*_*her 1 twitter oauth node.js twitter-oauth passport.js
我正在尝试使用护照模块在我的网络应用程序上设置twitter连接
我已经实现了如下:
App.js文件:
/**
* Module dependencies.
*/
var express = require('express');
var user = require('./server/routes/user');
var http = require('http');
var path = require('path');
var app = express();
var passport = require('passport');
var flash = require('connect-flash');
require('./server/config/passport')(passport); // pass passport for configuration
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.configure(function() {
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
// set up our express application
app.use(express.logger('dev')); // log every request to the console
app.use(express.cookieParser()); // read cookies (needed for auth)
app.use(express.bodyParser()); // get information from html forms
app.set('view engine', 'ejs'); // set up ejs for templating
// required for passport
app.use(express.session({ secret: 'SECRET' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session
});
// // routes ======================================================================
require('./server/routes/index')(app, passport); // load our routes and pass in our app and fully configured passport
Run Code Online (Sandbox Code Playgroud)
我正在使用express.session,但在尝试进行身份验证时收到以下错误消息:
Error: OAuthStrategy requires session support. Did you forget app.use(express.session(...))?
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我这样做?
Eld*_*ell 10
对于 4.0,这有一点改变。
首先,您需要安装express-session,然后在定义路线之前:
// Authentication configuration
app.use(session({
resave: false,
saveUninitialized: true,
secret: 'bla bla bla'
}));
Run Code Online (Sandbox Code Playgroud)
您可以稍后执行 OAuth 操作:
// Passport
app.use(passport.initialize());
app.use(passport.session());
passport.use(new TwitterStrategy({
...
));
Run Code Online (Sandbox Code Playgroud)
加载的Express中间件的顺序不对.试试这个:
// ...
app.configure(function() {
app.use(express.favicon());
app.use(express.logger('dev'));
// The following two middlwares are NOT necessary because bodyParser includes them.
// app.use(express.json());
// app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser()); // read cookies (needed for auth)
app.use(express.bodyParser()); // get information from html forms
// required for passport
app.use(express.session({ secret: 'SECRET' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
});
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7718 次 |
| 最近记录: |