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')
});
이 내 여권 전략이다.