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
28 lines
967 B
4 years ago
|
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: '/' }));
|