Erreur: échec de la recherche du jeton de demande en session

J’ai trouvé quelques problèmes dans le repository principal des passeports, mais je pense que cela concerne principalement cette stratégie, car je suis capable de m’authentifier avec succès à l’aide de la stratégie 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) 

J’utilise redis comme magasin de session, cependant, même après avoir éliminé cela, le message d’erreur identique échoue toujours.

 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.ssortingngify(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); } )); 

Je suis heureux d’essayer n’importe quoi, j’ai déposé un problème sur le repo, mais je pense que c’est peut-être quelque chose que je fais mal plutôt que quelque chose de mal avec le repo de repository de passeport.

… Soupir. J’ai oublié j’ai changé le sous-domaine. Donc, le cookie n’était pas lisible car le nom de domaine était différent.

Hey, si quelqu’un a toujours le problème, j’ai une autre solution …

ajoutez ce code:

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

ajoutez simplement un cookie: { secure: true } et cela fonctionnera très bien …

Moi aussi j’avais ce problème et la technique ci-dessus m’a aidé à résoudre ce problème.