1

パスポート Facebook 戦略に関連付けられた電子メール アドレスがデータベースに既に存在するかどうかをテストするときに、エラー メッセージを表示しようとしています。

これが私のコードです:

// callback route for facebook to redirect to
router.get('/facebook/redirect', passport.authenticate('facebook'), (req, res) => {
    res.redirect('/profile/');
});

// Facebook Strategy
passport.use(
    new FacebookStrategy({
        clientID: keys.facebook.clientID,
        clientSecret: keys.facebook.clientSecret,
        callbackURL: '/auth/facebook/redirect',
        profileFields: ['id', 'email', 'displayName', 'photos']
    }, (err, accessToken, refreshToken, profile, done) => {
        User.findOne({ email: profile.emails[0].value }).then((response) => {
            if(response) {
                console.log('Email already exists.'); // This is where I get my response
            } else {
                User.findOne({
                    facebookID: profile.id
                }).then((currentUser) => {
                    if(currentUser) {
                        done(null, currentUser);
                    } else {
                        new User({
                            name: profile.displayName,
                            username: profile.displayName + ' Facebook',
                            facebookID: profile.id,
                            email: profile.emails[0].value,
                            avatar: profile.photos ? profile.photos[0].value : '/img/faces/unknown-user-pic.jpg'
                        }).save().then((newUser) => {
                            done(null, newUser);
                        });
                    }
                })
            }
        })
    })
);

電子メールが既に存在する場合、ログイン ページでユーザーにエラー フラッシュ メッセージを表示するにはどうすればよいですか?

4

1 に答える 1