Паспорт + Google Token в приложении Node + Express продолжает выдавать «Несанкционированные» на попытки почтальона, токен исправен и проверен вручную - PullRequest
2 голосов
/ 14 марта 2019

У меня есть бэкэнд REST API, созданный с помощью Node + Express + Passport, и я пытаюсь пройти аутентификацию с помощью токена доступа Google. Я использую эту стратегию.

Я просмотрел документацию и проблемы с пакетом на github, но ничего не решило проблему.

Я проверил токен доступа на:

https://www.googleapis.com/oauth2/v1/tokeninfo?idToken с идентификатором Token и https://www.googleapis.com/oauth2/v1/tokeninfo?acessToken с токеном доступа, и оба действительны, но ни один из них не работает. Я дважды проверил, что я использую правильный идентификатор клиента и секретный ключ на сервере и на интерфейсе, с которого я получаю токен.

Вот соответствующий код:

    app.use(passport.initialize());
    passport.use(
      new GoogleTokenStrategy(
        {
          clientID: config.get('google.clientID'),
          clientSecret: config.get('google.clientSecret')
        },
        function(accessToken, refreshToken, profile, done) {

console.log(accessToken, refreshToken, profile, done)

          User.findOrCreate({ googleId: profile.id }, function(err, user) {
            return done(err, user);
          });
        }
      )
    );

    app.use('/user', passport.authenticate('google-token'), userRoute);

и я импортирую сверху:

const passport = require('passport');
const GoogleTokenStrategy = require('passport-google-token').Strategy;

Приложение не выдает никаких ошибок.

Я добавил тот console.log, в котором создана стратегия - когда я стреляю из почтальона, там НИЧЕГО не регистрируется. Когда я стреляю из углового интерфейса - он записывает данные и стреляет.

1 Ответ

0 голосов
/ 15 марта 2019

В моем случае это было вызвано из-за логики User.findOrCreate, которую я даже не определил. Пакет паспорта токена Facebook выдает внутреннюю ошибку сервера из-за этого, но Google просто молча потерпит неудачу без сообщения.

Я определю свою логику findOrCreate позже в процессе разработки. На данный момент это работает для тестирования:

  new GoogleTokenStrategy(
    {
      clientID: config.get('google.clientID'),
      clientSecret: config.get('google.clientSecret')
    },
    function(accessToken, refreshToken, profile, done) {
      return done(null, profile);
    }
  )
);
...