Google OAuth выдает недопустимые аргументы: неопределено, ошибка строки - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь реализовать OAuth в приложении Express с использованием Passport. js и когда я пытаюсь войти в систему с моей учетной записью Google, и я нажимаю на функцию обратного вызова, я получаю ошибку illegal arguments: undefined, string at Strategy.module.exports [as _verify]. Когда я удаляю аргумент req из списка параметров функции обратного вызова, профиль становится неопределенным, но когда у меня есть требование req и я записываю профиль в консоль, я получаю данные обратно, тогда возникает ошибка illegal arguments: undefined, string. Я также гарантирую, что я передаю passReqToCallback:true в моих настройках Google. Любая помощь будет оценена, я застрял на этом некоторое время сейчас.

passport.serializeUser((user, cb) => {
  return cb(null, user);
});
passport.deserializeUser((user, cb) => {
  return cb(null, user);
});
//googleOptions.js
 {
  clientID: process.env.googleClientID,
  clientSecret: process.env.googleClientSecret,
  callbackURL: 'http://localhost:5000/auth/google/callback',
  passReqToCallback: true
}
//googleCallback function
 async (req, accessToken, refreshToken, profile, done) => {
  try {
   // will log the profile so far as the parameter list is as is
   // will return undefined if req is missing from the parameter list
    console.log(profile);
    const user = await User.findOne({ googleId: profile.id });
    if (user) {
      done(null, user);
      return;
    }
    const salt = await bcrypt.genSalt(12);
    const hashedPassword = await bcrypt.hash(profile.token, salt);
    const newUser = new User({
      email: profile.emails[0].value,
      firstName: profile.name.displayName.split(' ')[0].join(''),
      lastName: profile.name.familyName,
      googleId: profile.id,
      password: hashedPassword
    });
    const token = newUser.generateAuthToken();
    req.token = token;
    await newUser.save();
    return done(null, newUser);
  } catch (error) {
    console.log(`Error Message: ${error}`);
    throw new Error(`Error Message: ${error.message}`);
  }
};
...