ссылка на паспорт-твиттер / подключение пользователя твиттера к пользователю приложения без сессий - PullRequest
0 голосов
/ 28 августа 2018

Я использую следующий код для проверки подлинности паспорт-твиттер: https://github.com/scotch-io/easy-node-authentication/blob/twitter/config/passport.js

Мой код выглядит так, когда вызывается обратный вызов:

  passport.use(
    new TwitterStrategy(
      {
        consumerKey: TWITTER_CONSUMER_KEY,
        consumerSecret: TWITTER_CONSUMER_SECRET,
        callbackURL: `${APP_URL}/auth/twitter/callback`,
      },
      async (accessToken, accessTokenSecret, profile, done) => {
        debugger;
        return done(null, profile);
      },
    ),
  );

Мое приложение связывает несколько учетных записей социальных сетей с учетной записью приложения пользователя и сохраняет их данные для аутентификации для последующего использования. Это немного отличается от общего варианта использования passport, где вы используете учетную запись социальной сети для входа в свое приложение.

Мой код разделяет интерфейс и бэкэнд-сервис, и я могу пройти весь процесс аутентификации. Когда аутентифицированная информация возвращается, я не могу получить зарегистрированного пользователя, поскольку у меня нет доступа к заголовкам запросов.

Середина после этого - функция serializeUser, которая, кажется, должна снова сериализовать пользователя моего приложения. Или нет? Я не уверен, что мне действительно нужно сериализовать пользователя приложения или просто сериализовать информацию о пользователе Twitter.

В любом случае, если он дойдет до функции serializeUser, я не могу передать что-либо промежуточному программному обеспечению, которое появится позже, потому что done(null, data) использует любую информацию из data для сериализации.

РЕДАКТИРОВАТЬ # 1 : После дальнейшего изучения документов паспорта я могу использовать собственный обратный вызов: passportjs.org/docs, однако я все еще сталкиваюсь с проблемами, зная, какой пользователь прошел проверку подлинности. Обратный вызов содержит только информацию о пользователе в твиттере, ничто не связывает эту информацию с пользователем приложения.

EDIT # 2 : в документах есть пример подключения: http://www.passportjs.org/docs/authorize/, хотя для этого требуется, чтобы пользователь вошел в систему и сеансы были включены. Если мы собираемся использовать приложение без сохранения состояния, чтобы мы могли кластеризовать основное приложение, проводить сеансы - плохая идея, если, возможно, вы не выбросили его в централизованную БД или что-то в этом роде.

...