Passport-Facebook работает в localhost, но не в Heroku (стек MERN) - PullRequest
0 голосов
/ 24 июня 2018

Я делаю простое приложение для входа в Facebook.Это прекрасно работает в localhost.Однако после развертывания в Heroku кнопка «Вход» просто обновляет страницу, и браузер остается на https://voting-app-28.herokuapp.com/auth/facebook без перенаправления.Я перепробовал все и также добавил URL-адрес к действующим URI перенаправления OAuth на Facebook.В консоли нет ошибок.

my passport.js

passport.serializeUser((user, done) => {
  done(null, user.id);
});

passport.deserializeUser((id, done) => {
  User.findById(id).then(user => done(null, user));
});

passport.use(
  new FacebookStrategy(
    {
      clientID: keys.facebookClientID,
      clientSecret: keys.facebookClientSecret,
      callbackURL: '/auth/facebook/callback',
      profileFields: ['id', 'name'],
      proxy: true
    },
    (accessToken, refreshToken, profile, done) => {
      User.findOne({ facebookId: profile.id }).then(user => {
        if (user) {
          return done(null, user);
        } else {
          new User({ facebookId: profile.id })
            .save()
            .then(user => done(null, user));
        }
      });
    }
  )
);

my authRoutes.js

  app.get('/auth/facebook', passport.authenticate('facebook'));

  app.get(
    '/auth/facebook/callback',
    passport.authenticate('facebook'),
    (req, res) => {
      res.redirect('/');
    }
  );

Вот мой Github repo и приложение Heroku , чтобы вы могли понять, что я имею в виду.

Пожалуйста, помогите и спасибо !!

1 Ответ

0 голосов
/ 30 августа 2018

У меня была такая же проблема. После многих поисков в Google я обнаружил, что Facebook разрешает только запросы от HTTPS. Несмотря на то, что мой домен Heroku был HTTPS, у него не было сертификата ssl. Я перешел на хобби dyno и применил ssl-сертификат в настройках Heroku, и теперь он работает.

...