Как использовать twitch-passport для аутентификации? Паспорт узла экспресс следующий - PullRequest
0 голосов
/ 08 октября 2019

Я работаю над настройкой аутентификации для моего сайта. Я хотел бы иметь несколько опций регистрации / подключения учетной записи в будущем, но сейчас я сосредоточен исключительно на проверке подлинности. Я использую Next.js для рендеринга на стороне сервера. Я скопировал код из http://www.passportjs.org/packages/passport-twitch/ и сохранил свой client_id и секретный файл в файле .env.

server.js ->

const port     = process.env.PORT || 3000;
const dev      = process.env.NODE_ENV;
const nextApp  = next({dev});
const express        = require("express");
const bodyParser     = require("body-parser");
const cookieParser   = require("cookie-parser");
const cookieSession  = require("cookie-session");
const passport       = require("passport");
const twitchStrategy = require("passport-twitch").Strategy;

const app = express();

nextApp.prepare().then(() => {
  app.use(bodyParser.urlencoded({ extended: true }));
  app.use(cookieParser());
  app.use(cookieSession({secret:"somesecrettokenhere"}));

  app.use(passport.initialize());

  passport.use(new twitchStrategy({
      clientID: process.env.TWITCH_CLIENT_ID,
      clientSecret: process.env.TWITCH_CLIENT_SECRET,
      callbackURL: "http://localhost:3000/auth/twitch/callback",
      scope: "user_read"
    },
    function(accessToken, refreshToken, profile, done) {
      console.log("profile: "+profile);
    }
  ));

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

  passport.deserializeUser(function(user, done) {
      done(null, user);
  });

  app.get("/", function (req, res) {
    return nextApp.render(req, res, '/Index', req.query);
  });

  app.get("/auth/twitch", passport.authenticate("twitch", {forceVerify: true}));

  app.get("/auth/twitch/callback",
  passport.authenticate("twitch", { failureRedirect: "/" }),
  function(req, res) {
      // Successful authentication, redirect home.
      res.redirect("/");
  });

  app.get('*', (req, res) => {
    return nextApp.render(req, res, '/Index', req.query);
  });

  app.listen(port, () => {
    //console.log(`listening on port ${port}`);
  });
});

Когда я перехожу по маршруту /auth/twitch, мне приходится дергать аутентификацию, после чего "не удалось получить профиль пользователя" после. Я абсолютно новичок в аутентификации и буду очень признателен за любую помощь. Спасибо!

edit: в качестве дополнительного примечания я планирую использовать uid-safe для секрета cookie.

1 Ответ

0 голосов
/ 09 октября 2019

Итак, я наконец-то нашел смысл засунуть консольный журнал в файл passport-twitch, чтобы увидеть ошибку от twitch о том, что v3 мертв, v5 жив. Потом увидел, что это зовет Кракена. Обновлен на паспорт-дергаться-спираль и вуаля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...