2013-05-02 2 views
16

메인 패스포트에 몇 가지 문제가 있음을 발견했습니다. 그러나 여권 - 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) 

세션 저장소로 redis를 사용하고 있지만,이를 제거한 후에도 여전히 동일한 오류 메시지가 나타나지 않습니다. 난 아무것도 시도 할 행복 해요

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

, 나는 REPO에 문제를 제기했지만, 나는 내가하고있어 뭔가 잘못이 아닌 여권 보관 용 REPO에 문제가 될 수있다 생각합니다.

답변

27

... 한숨. 하위 도메인을 변경하는 것을 잊어 버렸습니다. 따라서 도메인 이름이 다르기 때문에 쿠키를 읽을 수 없습니다.

+1

여기에 동일합니다. 나는 localhost에서 호스팅하고 있었고 사용했던 샘플은 127.0.0.1이었다. –

+0

및 여기에 동일 - localhost 대 127.0.0.1 doh – user655489

+0

upvoted 것들이 작동을 멈출 때 나 밖으로 지옥을 무서워! – nimgrg

0

헤이 누군가가 아직도 내가 다른 해결책을 가지고 문제 ...

이 코드 추가가 있는지 :

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

그냥 cookie: { secure: true }을 추가하고 잘 작동됩니다 ...

나도이 문제와 위의 기술을 통해이 문제를 해결할 수있었습니다.

관련 문제