2014-04-25 8 views
5

Sto utilizzando passport-twitter per configurare una connessione twitter sul mio sito. Gli utenti possono connettersi facendo clic su "accesso" o su "aggiungi nuovo elemento". L'unica differenza tra i due è che se si fa clic su Aggiungi nuovo elemento, una finestra modale dovrebbe aprire una volta theyre registrato nelPassport-Twitter - Errore: impossibile trovare il token di richiesta nella sessione

Per conoscere sul pulsante fanno clic, devo conservare l'URL nella 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) 
}); 

Tutto funziona bene nel mio ambiente di sviluppo, ma una volta in linea ottengo questo messaggio di errore: espresso

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) 
... 

mie impostazioni sono impostate correttamente twitter. Ecco quello che ottengo con i ceppi: Per la richiesta:

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

Per la richiamata:

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

forse potrebbe essere dovuto al problema sottodominio (http://example.com vs http://www.example.com) come non lo faccio avere il pb localmente. Come posso risolvere questo?

Molte grazie

EDIT: La mia chiave API è impostato in questo modo (come per questo tutorial: 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

dove hai impostato la chiave di accesso a twitter twitter? – Biba

+0

Ho modificato la mia domanda con le informazioni. Si prega di vedere sopra – Spearfisher

risposta

1

ho ottenuto lo stesso errore, ma risolto .. ed ecco ciò che il mio problema era e la soluzione.

Attualità, non mi piace il mio URL di reindirizzamento "http: // localhost/auth/twitter/callback". L'ho modificato in "http: // 127.0.0.1/auth/twitter/callback". Nel mio codice attuale, dovevo tenerlo come localhost o riceverei errori su un token mancante

Problemi correlati