Обработка потока Google oAuth для мобильных и веб-сайтов с использованием паспорта? - PullRequest
0 голосов
/ 24 апреля 2019

Итак, я реализовал поток Google oAuth с использованием паспорта, на данный момент это мой код:


const strategyCallback = async (accessToken, refreshToken, profile, cb) => {
  try {
    const user = await models.user.findOrCreate({
      where: {
        googleId: profile.id,
        firstName: profile.name.givenName,
        lastName: profile.name.familyName,
        email: profile.emails[0].value,
        username: profile.emails[0].value.split('@')[0],
        profilePictureUrl: profile.photos[0].value
      }
    });
    return cb(null, user);
  } catch (e) {
    return cb(e, false);
  }
};

passport.use(
  new GoogleStrategy(
    {
      clientID: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_SECRET,
      callbackURL: process.env.GOOGLE_CALLBACK
    },
    strategyCallback
  )
);

const authenticate = passport.authenticate('google', {
  scope: ['profile', 'email']
});

const authenticateCallback = passport.authenticate('google', {
  session: false,
  failureRedirect: '/login'
});

После аутентификации я подписываю и отправляю JWT для пользователя, который будет использоваться для защищенных маршрутов.,

Теперь все это работает для сети, но команда Android будет использовать мой API.Вместо этого они хотят использовать свою собственную форму согласия из приложения, а затем отправляют свои маркеры доступа обратно на сервер.По сути, мы хотим получить этот токен и сравнить его для аутентификации пользователя.У меня два вопроса.

Возможно ли это с паспортом?Куда бы мы перехватили маркер доступа, отправленный обратно в обратном вызове стратегии?

И два, мы не храним accessToken в нашей БД.Так как именно это можно сделать?

...