我正在使用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) {
...
});
你在哪裏有Twitter的Twitter API的關鍵設置? – Biba
我編輯了我的問題與信息。請參閱上文 – Spearfisher