2013-05-02 46 views
16

我發現主要護照回購中存在一些問題,但是,我認爲這主要與此特定策略有關,因爲我能夠使用passport-google-oauth策略成功進行身份驗證。錯誤:未能在會話中找到請求令牌

Error: failed to find request token in session 
    at Strategy.OAuthStrategy.authenticate (/home/glug/application/node_modules/passport-dropbox/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:124:54) 
    at attempt (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:243:16) 
    at Passport.authenticate (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) 
    at callbacks (/home/glug/application/node_modules/express/lib/router/index.js:161:37) 
    at param (/home/glug/application/node_modules/express/lib/router/index.js:135:11) 
    at pass (/home/glug/application/node_modules/express/lib/router/index.js:142:5) 
    at Router._dispatch (/home/glug/application/node_modules/express/lib/router/index.js:170:5) 
    at Object.router (/home/glug/application/node_modules/express/lib/router/index.js:33:10) 
    at Context.next (/home/glug/application/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
    at Context.actions.pass (/home/glug/application/node_modules/passport/lib/passport/context/http/actions.js:77:8) 

我使用Redis的作爲會話存儲,但是,即使是消除了,但它仍然與相同的錯誤信息失敗後。

var DropboxStrategy = require('passport-dropbox').Strategy; 

app.configure(function(){ 
    app.set('port', config.express.port); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser()); 
     app.use(express.session({ 
//  store: new RedisStore({ client: redis}), 
     secret: config.express.secret 
     })); 
     app.use(passport.initialize()); 
     app.use(passport.session()); 
    app.use(app.router); 
}); 

passport.serializeUser(function(user, done) { 
// console.log('Serializing: ' + JSON.stringify(user)); 
    done(null, user); 
}); 

passport.deserializeUser(function(obj, done) { 
// console.log('Deserializing: ' + obj); 
    done(null, obj); 
}); 

passport.use(new DropboxStrategy({ 
    consumerKey: config.dropbox.key, 
    consumerSecret: config.dropbox.secret, 
    callbackURL: config.dropbox.callbackURL 
    }, 
    function(token, tokenSecret, profile, done) { 
    // My storage function 
    return done(null, profile); 
    } 
)); 

我很高興地嘗試任何事情,我一直在回購提交的問題,但我認爲這可能是一些我做錯了,而不是有毛病護照的Dropbox回購。

回答

27

...嘆了口氣。我忘了我更改了子域名。所以,Cookie不可讀,因爲域名是不同的。如果有人仍然有我有另一種解決問題...

添加以下代碼

+1

同樣在這裏。我在本地主機上託管,我使用的示例有127​​.0.0.1。 – 2013-10-15 13:13:16

+0

和這裏相同 - localhost vs 127.0.0.1 doh – user655489 2014-03-13 22:33:54

+0

upvoted當事情停止工作時嚇到我了! – nimgrg 2014-04-01 05:32:39

0

嘿:

app.use(passport.session({ secret: 'Shhh.. This is a secret', cookie: { secure: true } })); 

只需添加cookie: { secure: true },它會工作得很好......

我也有這個問題,上面的技術幫助我解決了這個問題。

相關問題