2012-11-20 4 views
0

특정 속성이 누락 된 경우 호출해야하는 인증 콜백에서 일부 조건부 리디렉션을 시도하고 수행하기 위해 ExpressJS 및 PassportJS의 Facebook 전략을 사용하고 있습니다.PassportJS 및 ExpressJS 조건부 URL 리디렉션

내 사용자 스키마 :

var UserSchema = new Schema({ 
    id: ObjectId, 
    uid: String, 
    facebookToken: String, 
    username: String, 
    password: String, 
    salt: String, 
    firstName: String, 
    lastName: String, 
    email: String, 
    birthday: Date, 
    gender: String, 
    location: String, 
    phone: Number, 
    verifiedPhone: Boolean, 
    interests: { 
    culture: Boolean, 
    food: Boolean, 
    business: Boolean, 
    family: Boolean, 
    learning: Boolean, 
    sports: Boolean, 
    movies: Boolean, 
    music: Boolean, 
    events: Boolean, 
    nightlife: Boolean, 
    health: Boolean, 
    beauty: Boolean, 
    fashion: Boolean, 
    motoring: Boolean, 
    electronics: Boolean, 
    groceries: Boolean, 
    travel: Boolean, 
    decor: Boolean 
    }, 
    weeklyNotifcation: Number, 
    weeklyNotificationSent: Number, 
    created: {type: Date, default: Date.now} 
}); 

내 콜백 : /auth/facebook가 호출 된 후

app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), function(req, res) { 
    User.findOne({uid: req.session.uid}, function(err, user) { 
    if(user.email || user.location || user.phone || user.location == undefined) { 
     res.redirect('/register'); 
    } else { 
     res.redirect('/'); 
    } 
    }); 
}); 

데이터는 몽고에 저장됩니다. 세션을 사용하여 DB를 확인하고 DB에 저장되지 않았으므로 필드를 반환하지 않으므로 정의되지 않았는지 확인합니다. 콜백이 실패하고 수신 된 데이터를 반환하지 않습니다.

도움이 될 것입니다.

+0

이 문제를 해결할 수 있었습니까? 나는 같은 문제를 가지고있다 –

답변

1
if(user.email === undefined || user.location === undefined || user.phone === undefined || user.location === undefined) { 

입니다. 또한 오류가 있는지 확인하려면 err 변수를 확인해야합니다.