Я пытаюсь издеваться над социальной аутентификацией в твиттере, но сталкиваюсь со странной ошибкой !!
Вот что я делаю:
it("should redirect a user to profile page with data", done => {
nock("https://api.twitter.com/")
.filteringPath(() => "/")
.persist()
.post("/")
.reply(302, undefined, {
Location: `/api/v1/profile/${dummyUser.username}`
})
.log(console.log);
chai
.request(app)
.get("/api/v1/auth/twitter")
.end((err, res) => {
expect(res.redirect).to.be.equals(true);
expect(res.status).to.be.equal(302);
expect(res.header.location).to.be.equals(
`/api/v1/profile/${dummyUser.username}`
);
done();
});
Но при попыткеподключиться к твиттеру Я получаю эту ошибку:
соответствие https://api.twitter.com:443/ POST https://api.twitter.com:443/: true Сообщение от auth Не удалось получить маркер запроса ===== {Ошибка: connect ECONNREFUSED 127.0.0.1:80 в TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1117: 14) errno: 'ECONNREFUSED', код: 'ECONNREFUSED', системный вызов: 'connect',
адрес: '127.0.0.1 ', порт: 80} Ошибка: connect ECONNREFUSED 127.0.0.1:80
Я не знаю, откуда он, возможно, из времени жизни запроса.
Здесьмой обработчик для /auth/twitter and my callback
authRouters.get("/auth/twitter", passportTwitter.authenticate("twitter"));
authRouters.get(
"/auth/twitter/callback",
passportTwitter.authenticate("twitter", {
failureRedirect: "/login",
session: false
}),
(req, res) => {
res.redirect(`/api/v1/profile/${req.user.username}`);
}
);
и как выглядит мой authRouter:
import dotenv from "dotenv";
import passport from "passport";
import twitterStrategy from "passport-twitter";
import createUserFromSocial from "./createUserFromSocial";
dotenv.config();
const TwitterStrategy = twitterStrategy.Strategy;
passport.use(
new TwitterStrategy(
{
consumerKey: process.env.TWITTER_CLIENT_ID,
consumerSecret: process.env.TWITTER_CLIENT_SECRET,
callbackURL: "http://localhost:3000/api/v1/auth/twitter/callback",
passReqToCallback: true
},
async (request, accessToken, refreshToken, profile, done) => {
const user = await createUserFromSocial(profile);
return user
? done(null, user)
: done(new Error("An error occurs , please try again later"));
}
)
);
export default passport;
Любая помощь о том, как исправить эту ошибку ??Есть ли лучший способ издеваться над социальной аутентификацией с твиттером Спасибо.