From facebook token to jwt token From facebook token to jwt token mongoose mongoose

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              });  };