Я использую стратегию 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 не срабатывает.Я попытался войти в консоль из функции обратного вызова, и в терминале ничего не появляется.