Guest User

Ja hueyu

a guest
Nov 19th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const passport = require('passport');
  2. const FacebookStrategy = require('passport-facebook').Strategy;
  3. const keys = require('./keys');
  4. const User = require('../models/user-model');
  5. const router = require('express').Router();
  6.  
  7. passport.serializeUser((user, done) => {
  8.     done(null, user.id);
  9. });
  10.  
  11. passport.deserializeUser((id, done) => {
  12.     User.findById(id).then((user) => {
  13.         done(null, user);
  14.     });
  15. });
  16.  
  17. passport.use(
  18.     new FacebookStrategy({
  19.         // options for the facebook strategy
  20.         clientID: keys.facebook.clientID,
  21.         clientSecret: keys.facebook.clientSecret,
  22.         callbackURL: '/auth/facebook/redirect',
  23.     }, (accessToken, refreshToken, profile, done) => {
  24.         // check if the user already exists
  25.         User.findOne({facebookid: profile.id}).then((currentUser) => {
  26.             if (currentUser) {
  27.                 // already have the user
  28.                 done(null, currentUser);
  29.             } else {
  30.                 // if not, create user
  31.                 new User({  // add new user to the db
  32.                     username: profile.displayName,
  33.                     facebookid: profile.id
  34.                 }).save().then((newUser) => {
  35.                     done(null, newUser);
  36.                 });
  37.             }
  38.         });
  39.     })
  40. );
  41.  
  42. // auth with facebook
  43. router.get('/facebook', passport.authenticate('facebook', {
  44.     scope: ['profile']
  45. }));
  46.  
  47. // callback route for facebook
  48. router.get('/facebook/redirect', passport.authenticate('facebook'), (req, res) => {
  49.     res.redirect('/profile/');
  50. });
  51.  
  52. module.exports = router;
Add Comment
Please, Sign In to add comment