47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
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 });
|
|
}
|
|
);
|
|
}
|
|
));
|
|
};
|