2014-04-25 49 views
5

我正在使用passport-twitter在我的網站上設置twitter連接。用戶可以通過點擊'登錄'或'添加新項目'進行連接。 2之間的唯一區別是,如果他們點擊添加新項,模態窗口應該打開一次嗎更有登錄Passport-Twitter - 錯誤:在會話中找不到請求令牌

要知道按鈕他們點擊,我的URL存儲在req.session.referrer

// route for twitter authentication and login 
app.get('/auth/twitter', function(req, res, next){ 
    req.session.referrer = req.url; 
    console.log(req.session); 
    passport.authenticate('twitter')(req, res, next); 
}); 

app.get('/auth/twitter/new', function(req, res, next){ 
    req.session.referrer = req.url; 
    console.log(req.session); 
    passport.authenticate('twitter')(req, res, next); 
}); 

// handle the callback after twitter has authenticated the user 
app.get('/auth/twitter/callback', function(req, res, next){ 
    var options = { 
      successRedirect : '/twitter-user/signin', 
      failureRedirect : '/' 
     }; 

    console.log(req.session); 
    if (req.session.referrer && req.session.referrer.indexOf('new') > -1) options.successRedirect = '/twitter-user/new'; 

    passport.authenticate('twitter', options)(req, res, next) 
}); 

一切正常,在我的開發環境,但一旦網上出現此錯誤消息: 快遞

500 Error: Failed to find request token in session 
at Strategy.OAuthStrategy.authenticate (/app/node_modules/passport-twitter/node_modules/passport-oauth1/lib/strategy.js:142:54) 
... 

我的設置都正確設置在Twitter上。下面是我得到的日誌: 對於請求:

{ cookie: 
    { path: '/', 
     _expires: null, 
     originalMaxAge: null, 
     httpOnly: true }, 
    passport: {}, 
    referrer: '/auth/twitter' } 

回調:

{ cookie: 
    { path: '/', 
     _expires: null, 
     originalMaxAge: null, 
     httpOnly: true }, 
    passport: {} } 

也許這可能是由於子域問題(http://example.com VS http://www.example.com),因爲我不本地有pb。 我該如何解決這個問題?

非常感謝

編輯:我的API密鑰設置像這樣(按照本教程:http://scotch.io/tutorials/javascript/easy-node-authentication-twitter):

passport.use(new TwitterStrategy({ 

    consumerKey  : configAuth.twitterAuth.consumerKey, 
    consumerSecret : configAuth.twitterAuth.consumerSecret, 
    callbackURL  : configAuth.twitterAuth.callbackURL 

},function(token, tokenSecret, profile, done) { 
    ... 
    }); 
+0

你在哪裏有Twitter的Twitter API的關鍵設置? – Biba

+0

我編輯了我的問題與信息。請參閱上文 – Spearfisher

回答

1

我得到了同樣的錯誤,但解決它..這裏就是我的問題是和解決方案。

現實,它不喜歡我的重定向url「http:// localhost/auth/twitter/callback」。我將它改爲「http:// 127.0.0.1/auth/twitter/callback」。在我的實際代碼中,我必須保留它作爲本地主機或我會得到關於丟失的令牌的錯誤

相關問題