You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
967 B

import { Strategy, StrategyOption, AuthenticateOptions, Profile } from 'passport-facebook';
import { Router } from 'express'
import passport from 'passport'
import genericStrategy from '../strategy'
const strategyOptions: StrategyOption = {
clientID: process.env.FACEBOOK_CLIENT_ID as string,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET as string,
callbackURL: '/auth/facebook/redirect',
profileFields: ['id', 'displayName', 'picture.type(large)', 'email']
}
export function facebookStrategy() {
return new Strategy(strategyOptions, genericStrategy<Profile>('facebook'));
}
export const facebookRouter = Router()
const facebookAuthenticateOptions: AuthenticateOptions = {
authType: 'rerequest', scope: ['email']
}
facebookRouter.get('/facebook', passport.authenticate('facebook', facebookAuthenticateOptions));
facebookRouter.get('/facebook/redirect',
passport.authenticate('facebook', { successRedirect: '/museo', failureRedirect: '/' }));