Johnsoct
10/18/2017 - 9:21 PM

DEFAULT passport-twitter

Basic passport config for using the passport-twitter strategy.

passport.use(new TwitterStrategy({
      consumerKey: process.env.TWITTER_CONSUMER_KEY,
      consumerSecret: process.env.TWITTER_CONSUMER_SECRET,
      callbackURL: `${process.env.TWITTER_CALLBACK_URL}`,
      includeEmail: true
    },
    function(token, tokenSecret, profile, done) {
      console.log(profile);
      User.findOne({ email: profile.emails[0].value },
          function(err, user) {
            // handle immediate errors
            if (err) return catchErrors(err);
            // If a user with an email === google email, check for google.id
            if (user) {
              // if user's google schema info is undefined, set dat shit
              if (user.twitter.id === undefined) {
                user.twitter.id = profile.id;
                user.twitter.token = token;
                user.twitter.email = profile.email;
                user.twitter.name = profile.displayName;
              }
              if (user.name === undefined) {
                user.name = profile.givenName + profile.familyName;
              }
              user.save();
              return done(null, user);
            } else { // If no user exists with email === twitter email, create new User
              const user = new User();
              // local data
              user.name = profile.displayName;
              user.email = profile.email;
              user.twitter.id = profile.id;
              user.twitter.token = token;
              user.twitter.name = profile.displayName;
              user.twitter.email = profile.email;
              console.log(user);
              user.save(function(err) {
                if (err) console.log(err);
                return done(err, user);
              });
            }
          }
      );
    }
));