2013-05-02 17 views
16

Znalazłem kilka problemów podczas repozytorium głównego paszportu, jednak myślę, że dotyczy to przede wszystkim tej konkretnej strategii, ponieważ jestem w stanie skutecznie uwierzytelnić za pomocą strategii paszportowej google-oauth .Błąd: nie udało się znaleźć tokena żądania w sesji

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) 

Używam Redis jako magazynu sesji, jednak nawet po wyeliminowaniu, że to nadal nie z identycznym komunikatem o błędzie.

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

Cieszę się spróbować wszystkiego, mam złożony problem na repo, ale myślę, że to może być coś nie tak, zamiast coś z repo paszportowe skrzynki referencyjnej robię.

Odpowiedz

27

... Westchnienie. Zapomniałem, że zmieniłem subdomenę. Tak więc plik cookie nie był czytelny, ponieważ nazwa domeny była inna.

+1

To samo tutaj. Byłem hosting na localhost i próbka, której użyłem miał 127.0.0.1. –

+0

i to samo tutaj - localhost vs 127.0.0.1 doh – user655489

+0

awansował, że mnie przeraził, gdy wszystko przestało działać! – nimgrg

0

Hej, jeśli ktoś nadal ma problem mam innego rozwiązania ...

dodać ten kod:

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

wystarczy dodać cookie: { secure: true } i będzie działać dobrze ...

Też miałem ten problem, a powyżej technika pomogła mi rozwiązać ten problem.

Powiązane problemy