From facebook token to jwt token
You need to create 2 routes :
1) This will be called to login to facebook.
2)Callback route if the user authentication is successful.(This callback route needs to be registered in the facebook developer portal.
//Facebook Loginapp.route('/auth/facebook').get(passport.authenticate('facebook', { scope: 'email' }));// Callbackapp.route('/auth/facebook/callback').get(passport.authenticate('facebook'),users.generateJWT);
Define a facebook strategy that will store the user details (id, token, email) in your database
var facebookStrategy = new FacebookStrategy({ clientID: cfg.facebook.clientID,clientSecret: cfg.facebook.clientSecret,callbackURL: cfg.facebook.callbackURL,profileFields: ['id', 'email', 'first_name', 'last_name']},function(token, refreshToken, profile, done) { console.log("Token: "+ token); console.log("RefreshToken: "+ refreshToken); console.log("profile: "+ profile); process.nextTick(function() { User.findOne({ 'facebook.id': profile.id }, function(err, user) { if (err) return done(err); if (user) { console.log("User Found"); return done(null, user); } else { console.log("Creating user"); var newUser = new User(); console.log("Token: "+ token); newUser.facebook.id = profile.id; newUser.facebook.token = token; newUser.facebook.name = profile.name.givenName + ' ' + profile.name.familyName; newUser.facebook.email = (profile.emails[0].value || '').toLowerCase(); newUser.save(function(err) { if (err) throw err; return done(null, newUser); }); } });});});
In the controller, write the below code for callback route:
/*** Generate JWT Token */ exports.generateJWT = function(req, res) { var token; token = req.user.generateJwt(); res.status(200); res.json({ "token" : token }); };