/ / Erro: falha ao localizar o token de solicitação na sessão - node.js, express, dropbox-api, passport.js

Erro: falha ao localizar o token de solicitação na sessão - node.js, express, dropbox-api, passport.js

Eu encontrei alguns problemas no repositório principal de passaporte, no entanto, eu acho que isso pertence principalmente a esta estratégia específica, como eu sou capaz de autenticar com sucesso usando a estratégia de 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)

Eu estou usando redis como o armazenamento de sessão, no entanto, mesmo depois de eliminar isso, ainda está falhando com a mensagem de erro idêntica.

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

Estou feliz em tentar qualquer coisa, eu arquivei um problema no repositório, mas acho que pode ser algo que eu estou fazendo de errado, em vez de algo de errado com o repo passport-dropbox.

Respostas:

27 para resposta № 1

... suspiro. Eu esqueci que mudei o subdomínio. Portanto, o cookie não era legível porque o nome do domínio era diferente.


0 para resposta № 2

Ei, se alguém ainda está tendo o problema, eu tenho outra solução ...

adicione este código:

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

apenas adicione cookie: { secure: true } e vai funcionar muito bem ...

Eu também tive essa questão e técnica acima me ajudou a resolver isso.