2013-05-02 11 views
16

Ich fand ein paar Probleme auf der Hauptreport Repo, aber ich denke, das ist in erster Linie auf diese spezifische Strategie, wie ich erfolgreich mit der Pass-google-oauth Strategie authentifizieren kann .Fehler: fehlgeschlagen Anfrage Token in Sitzung zu finden

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) 

Ich verwende redis als Session-Speicher, aber auch nach dem Eliminieren, dass es mit der identischen Fehlermeldung noch hat versagt.

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); 
    } 
)); 

Ich bin glücklich, alles zu versuchen, ich habe ein Problem auf dem Repo eingereicht, aber ich denke, es kann etwas, ich falsch, anstatt etwas zu tun, bin falsch mit der Pass-Dropbox-Repo.

Antwort

27

... Seufzer. Ich habe vergessen, dass ich die Subdomain geändert habe. Der Cookie war also nicht lesbar, weil der Domainname anders war.

+1

Das gleiche hier. Ich hosting auf localhost und die Probe, die ich verwendete, hatte 127.0.0.1. –

+0

und das gleiche hier - localhost vs 127.0.0.1 doh – user655489

+0

upvoted verängstigt die Hölle aus mir, wenn die Dinge aufhörten zu arbeiten !! – nimgrg

0

Hey, wenn jemand mit immer noch die Frage, die ich eine andere Lösung haben ...

fügen Sie diesen Code:

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

nur cookie: { secure: true } hinzufügen und es wird gut funktionieren ...

Ich hatte auch dieses Problem und oben Technik half mir, dies zu lösen.

Verwandte Themen