2014-02-28 3 views
0

Box.com OAuth2.0을 사용하여 사용자를 인증하려고합니다. 나는 인증 코드로 콜백 URL로 리다이렉트하는 초기 호출과 로그인을 만든다. 이 시점에서 내 서버는 여권을 사용하여 콜백을 처리하지만 어떤 이유로 302를 반환하고 oauth 인증 프로세스의 시작 부분으로 리디렉션합니다. 여권 인증 콜백이 처음으로 리디렉션 됨 (상자)

//box authentication routes 
    app.get('/api/box', passport.authorize('box')); 

    // the callback after box has authorized the user 
    app.get('/api/box/callback', passport.authorize('box', { 
     successRedirect: '/', 
     failureRedirect: '/login' 
    }) 
); 

나는 나의 길을 내 자신의 핸들러 요청 데이터를 사용하여 호출 올바른 것 같다되고 있음을 확인했습니다. Box가 200을 반환하고 url에 인증 코드가 포함되어 있습니다.

passport.use(new BoxStrategy({ 
    clientID: config.box.clientID, 
    clientSecret: config.box.clientSecret, 
    callbackURL: config.box.callbackURL, 
    passReqToCallback: true 
    }, 
    function(req, accessToken, refreshToken, profile, done) { 

    process.nextTick(function() { 

     if(!req.user) { 
      // try to find the user based on their google id 
     User.findOne({ 'box.id' : profile.id }, function(err, user) { 
      if (err) 
      return done(err); 

      if (user) { 
      // if a user is found, log them in 
      return done(null, user); 
      } else { 
      // if the user isnt in our database, create a new user 
      var newUser = new User(); 

      // set all of the relevant information 
      newUser.box.id = profile.id; 
      newUser.box.accessToken = accessToken; 
      newUser.box.refreshToken = refreshToken; 
      newUser.box.name = profile.name; 
      newUser.box.email = profile.login; 

      // save the user 
      newUser.save(function(err) { 
       if (err) 
       throw err; 
       return done(null, newUser); 
      }); 
      } 
     }); 
     } else { 
     // user already exists and is logged in, we have to link accounts 
     var user = req.user; 

     // update the current users box credentials 
     user.box.id = profile.id; 
     user.box.accessToken = accessToken; 
     user.box.refreshToken = refreshToken; 
     user.box.name = profile.name; 
     user.box.email = profile.login; 

     // save the user 
     user.save(function(err) { 
      if (err) 
      throw err; 
      return done(null, user); 
     }); 
     } 
    }); 
    } 
)); 

이 리디렉션 동작의 원인이 될 수있는 것과 같은 통찰력을 주셔서 감사합니다 :

app.get('/api/box/callback', function(req, res) { 
    console.log('auth called') 
    }); 

이 내 여권 전략이다.

답변

0

결국 리디렉션을 일으키는 PeerServer의 인스턴스가되었습니다.

관련 문제