Я не могу ввести метод проверки паспорта при авторизации на Facebook. Мой console.log там не отображается. Я посмотрел в Интернете, и это не мой DNS, и мой профиль приложения правильно настроен с API Facebook (API получает реквизиты). Моя локальная стратегия работает, но я не могу найти способы заставить работать Facebook. Я проверил запрос с почтальоном и получил ответ 200 с файлом html для входа в Facebook. Я использовал свой фейсбук access_token с почтовым запросом для тестирования.
passport.config.ts
import { PassportStatic } from 'passport';
import { Application } from 'express';
// Strategies imports
import local from './strategies/local';
import facebook from './strategies/facebook';
export default function (app: Application, passport: PassportStatic) {
// Enable strategies
passport.use(local);
passport.use('facebook', facebook);
// Add passport to express
app.enable('trust proxy');
app.use(passport.initialize());
}
facebook.ts
import { Strategy as Facebook, Profile } from "passport-facebook";
import { getManager } from "typeorm";
import { User } from "../../db/entity/User";
export default new Facebook(
{
clientID: "myId",
clientSecret: "myClientSecret",
callbackURL: "/v1/auth/facebook/callback",
profileFields: ["id", "first_name", "last_name", "email"]
},
async function (accessToken: string, refreshToken: string, profile: Profile, done: Function) {
console.log('foo');
let manager = getManager();
let user = await manager.findOne(User, { where: { facebookId: profile.id } });
if (!user) {
user = User.createFromFacebook(profile);
user = await manager.save(user);
return done(null, user);
}
return done(null, user);
}
);
auth.ts (маршрутизация)
router.post('/facebook/callback', passport.authenticate('facebook', controller.redirectAfterOAuth));
router.post("/localFacebook", passport.authenticate('facebook'));
app.ts
app.use(compression());
app.use(bodyParser.json( { limit: "50MB" } ));
app.use(bodyParser.urlencoded({ extended: true }));
// Passport configuration
configurePassport(app, passport);