Проблема с перенаправлением после входа в Google в приложении экспресс-реакции с использованием passport-google-oauth20 - PullRequest
0 голосов
/ 14 января 2019

У меня экспресс-бэкэнд и create-реагировать-app2 в качестве внешнего интерфейса, я также использую setupProxy. Теперь я настроил приложение для входа в Google, однако после входа я не получаю правильного перенаправления на страницу индекса. Вот настройка Google oauth в console.developer.google.com

enter image description here

Я использую паспорт google oauth20 для аутентификации: Вот мой паспортный файл:

const  GoogleStrategy   = require('passport-google-oauth20').Strategy;
const keys = require('./../keys/secret');
const  {User} = require('./../models/user');



module.exports = function(passport) {


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


    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });

passport.use(new GoogleStrategy({
    clientID: keys.googleClientID,
    clientSecret: keys.googleClientSecret,
    callbackURL: '/auth/google/callback'
  },
  async (accessToken, refreshToken, profile, done) => {
    const existingUser = await User.findOne({ 'google.id' :  profile.id });

    if(existingUser) {

        done(null, existingUser);

    }else {
       const user =  await new User({ 
           'google.id' :  profile.id,
           isSocialAccountPresent: true })
       .save();
       done(null, user);
    }


  }
));

}

Вот мои маршруты:

router.get('/google',
  passport.authenticate('google', { scope: ['profile', 'email'] }));


  router.get('/google/callback', 
  passport.authenticate('google'),
   (req, res) => {
    // Successful authentication, redirect home.
    res.redirect('/');
  });

Вот мой файл setupProxy:

const proxy = require("http-proxy-middleware");
module.exports = function(app) {

  app.use(proxy("/auth/*", { target: "http://localhost:5000/" }));
  app.use(proxy("/api/*", { target: "http://localhost:5000/" }));


};

Я перенаправлен на следующий URL:

http://localhost:3000/auth/google/callback?code=4/0gBVQE1R0m7FWFlg_QtXE2n9lvwVHoG_lNNH_zCueOeQAJZc6-8FygiH9u_9BfnQQt8yl2ECmD1gW3Gq9by25D4&scope=email+profile+https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email

вместо http://localhost:5000/auth/google/callback

Ответы [ 2 ]

0 голосов
/ 03 августа 2019

Используя res.redirect ('/'), вы должны использовать полный путь (http://localhost:5000. .. .).

0 голосов
/ 10 февраля 2019

В вашем файле setupProxy.js попробуйте это ...

app.use(proxy("/auth/**", { target: "http://localhost:5000/" }));
app.use(proxy("/api/*", { target: "http://localhost:5000/" }));

Вы увидите, что я добавил дополнительную звездочку. Это говорит узлу, что нужно идти на один уровень глубже для "/ callback". Надеюсь, это поможет.

...