ExpressJS と PassportJS の Facebook 戦略を使用して、特定のプロパティが欠落している場合に呼び出される認証コールバックで条件付きリダイレクトを実行しようとしています。
私のユーザースキーマ:
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}
});
私のコールバック:
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('/');
}
});
});
呼び出された後、データはmongoに保存され/auth/facebook
ます。セッションの使用に対してDBをチェックし、DBに保存されていないためフィールドが返されないため、未定義かどうかを確認します。コールバックは失敗し、受信したデータは返されません。
どんな助けでも大歓迎です。