Используя passport-google-oauth20, пытаемся создать элемент mon go для URL изображения - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать элемент в таблице mongoDB, который содержит URL-адрес "картинки" из профиля пользователя Google, который входит в мое приложение, используя passport-google-oauth20 .

Ниже приведена моя схема:

const userSchema = new mongoose.Schema ({
  name: String,
  picture: String,
  googleId: String,
});

Ниже приведена стратегия Google:

passport.use(new GoogleStrategy({
    clientID: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET,
    callbackURL: "https://localhost:3000/auth/google/secrets",
    userProfileURL: "https://www.googleapis.com/oauth2/v3/userinfo"
  },
  function(accessToken, refreshToken, profile, cb) {
    console.log(profile);
    console.log(profile._json.picture);
    const customerEmail = profile._json.email;
    User.findOrCreate(
      { googleId: profile.id },
      { name: profile.displayName },
      { picture: profile._json.picture },
      function (err, user) {
      return cb(err, user);
    });
  }
));

в моей таблице mon go она будет создавать элементы для "googleId" и «имя», но не будет создавать элемент для «изображения». и никаких сообщений об ошибках для этого.

однако интересно, что я могу console.log(profile._json.picture);, и он действительно записывает строку (которая является URL - неуверен, если факт, что URL имеет какое-либо отношение к этому ??)

Есть идеи, что я здесь не так делаю? Я предполагаю, что это проблема на стороне MongoDB, так как строка URL возвращается в console.log.

1 Ответ

0 голосов
/ 03 апреля 2020

Спасибо @ Tunmee и его ответу на эту ссылку . Я не использовал метод findOrCreate правильно. Я изменил свою функцию следующим образом:

function(accessToken, refreshToken, profile, cb) {
    console.log(profile);
    var profilePicture = profile._json.picture;
    console.log(profilePicture + "inside function");
    const customerEmail = profile._json.email;
    User.findOrCreate(
      { googleId: profile.id, name: profile.displayName, picture: profile._json.picture  },
      function (err, user) {
      return cb(err, user);
    });

Ранее другие ключи и значения, которые я хотел получить в моих документах MongoDB, передавались как другие аргументы, а не просто аргумент условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...