Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const passport = require('passport');
- const FacebookStrategy = require('passport-facebook').Strategy;
- const keys = require('./keys');
- const User = require('../models/user-model');
- const router = require('express').Router();
- passport.serializeUser((user, done) => {
- done(null, user.id);
- });
- passport.deserializeUser((id, done) => {
- User.findById(id).then((user) => {
- done(null, user);
- });
- });
- passport.use(
- new FacebookStrategy({
- // options for the facebook strategy
- clientID: keys.facebook.clientID,
- clientSecret: keys.facebook.clientSecret,
- callbackURL: '/auth/facebook/redirect',
- }, (accessToken, refreshToken, profile, done) => {
- // check if the user already exists
- User.findOne({facebookid: profile.id}).then((currentUser) => {
- if (currentUser) {
- // already have the user
- done(null, currentUser);
- } else {
- // if not, create user
- new User({ // add new user to the db
- username: profile.displayName,
- facebookid: profile.id
- }).save().then((newUser) => {
- done(null, newUser);
- });
- }
- });
- })
- );
- // auth with facebook
- router.get('/facebook', passport.authenticate('facebook', {
- scope: ['profile']
- }));
- // callback route for facebook
- router.get('/facebook/redirect', passport.authenticate('facebook'), (req, res) => {
- res.redirect('/profile/');
- });
- module.exports = router;
Add Comment
Please, Sign In to add comment