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.