const passport = require('passport'); const FacebookStrategy = require('passport-facebook').Strategy; const config = require('../../config'); const User = require('../../models/user'); module.exports = function(passport) { passport.use(new FacebookStrategy( { clientID: config.services.facebook.appId, clientSecret: config.services.facebook.appSecret, callbackURL: 'http://localhost:3001/auth/facebook/callback', profileFields: ['id', 'email', 'first_name', 'last_name', 'picture'], }, (accessToken, refreshToken, profile, done) => { const { email, first_name: firstName, id: userId, last_name: lastName, picture: { data: { url = null } = {} } = {}, } = profile._json; const avatar = url; User.findOneAndUpdateOrCreate( { email, }, { accessToken, method: profile.provider, userId, }, { avatar, email, firstName, lastName, }, (err, user) => { return done(err, user, { accessToken, refreshToken }); } ); } )); };