Проект Sails.js с использованием passport.js не перенаправляет на твиттер - PullRequest
1 голос
/ 12 июня 2019

Я использую стратегию Twitter с passport.js, но когда я сталкиваюсь с определенным маршрутом, таким как auth / twitter, в приложении, оно никогда не перенаправляет на вход / авторизацию Twitter.

Мой паспорт.js

const passport = require("passport");
const TwitterStrategy = require("passport-twitter").Strategy;

passport.serializeUser(function(user, cb) {
  cb(null, user.id);
});

passport.deserializeUser(function(id, cb) {
  User.findOne({ id }, function(err, user) {
    cb(err, user);
  });
});

passport.use(
  new TwitterStrategy(
    {
      consumerKey: "some_key",
      consumerSecret: "some_secret",
      callbackURL: "http://www.example.com/auth/twitter/callback"
    },
    function(token, tokenSecret, profile, cb) {
      User.findOrCreate({ twitterId: profile.id }, function(err, user) {
        return cb(err, user);
      });
    }
  )
);

AuthController.js

const passport = require("passport");

module.exports = {
  twitter: function(req, res) {
    console.log("TWITTER AUTH IS RUNNING");
    passport.authenticate("twitter");
    console.log("NOT HANGING");
  },

  twitterCallback: function(req, res) {
    console.log("TWITTER CALLBACK");
    passport.authenticate("twitter", {
      successRedirect: "/",
      failureRedirect: "/search"
    });
  }
};

Мои маршруты. js

// AUTH
  "GET /auth/twitter": "AuthController.twitter",
  "GET /auth/twitter/callback": "AuthController.twitterCallback",

Консольные.логи работают соответственно, но приложение никогда не отправляется в твиттерчасть проверки подлинности.

ОБНОВЛЕНИЕ: я исправил проблему, скорее всего, это была проблема с тем, как я настраивал паспорт, не включая промежуточное программное обеспечение, но теперь у меня есть еще одна проблема - ни одна из моих страниц не отображается.Это просто пустые страницы, и в них даже не отображается значок фаворита.

ОБНОВЛЕНИЕ: я, кажется, сузил проблему до файла http.js.

// order: [
    //   "session",
    //   "passportInit", // <==== If you're using "passport", you'll want to have its two
    //   "passportSession" // <==== middleware functions run after "session".
    // ],
    // passportInit: (function() {
    //   return require("passport").initialize();
    // })(),
    // passportSession: (function() {
    //   return require("passport").session();
    // })()

Всякий раз, когда я раскомментирую этоблок кода страницы не будут отображаться.Точнее, когда я только оставляю заказ: ["сессия"] без комментариев.Я думаю, что промежуточное ПО удерживает страницы от рендеринга.

ОБНОВЛЕНИЕ: Это было то, как некоторые промежуточные программы были исключены.Я добавил все промежуточные программы по умолчанию, и теперь это работает.

НОВАЯ ПРОБЛЕМА: функция обратного вызова после первоначального passport.use не срабатывает.Я попытался войти в консоль из функции обратного вызова, и в терминале ничего не появляется.

...