Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google OAUTH没有在MongoDB中存储电子邮件?_Javascript_Mongodb_Mongoose_Oauth 2.0_Google Oauth - Fatal编程技术网

Javascript Google OAUTH没有在MongoDB中存储电子邮件?

Javascript Google OAUTH没有在MongoDB中存储电子邮件?,javascript,mongodb,mongoose,oauth-2.0,google-oauth,Javascript,Mongodb,Mongoose,Oauth 2.0,Google Oauth,当用户通过Google-OAUTH2.0注册时,我可以将整个console.log配置文件记录下来,但是如何将整个console.log输出保存在我的userDB mongoDB中呢?如果没有,我如何在我的数据库中获取用户的电子邮件 app.use(session({ secret: "process.env.SECRET", resave: false, saveUninitialized: false })); app.use(passport.initia

当用户通过Google-OAUTH2.0注册时,我可以将整个console.log配置文件记录下来,但是如何将整个console.log输出保存在我的userDB mongoDB中呢?如果没有,我如何在我的数据库中获取用户的电子邮件

app.use(session({
  secret: "process.env.SECRET",
  resave: false,
  saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());

mongoose.connect("mongodb://localhost:27017/userDB", {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.set("useCreateIndex", true);
我只需要googleId或facebookId,但我还需要电子邮件和displayName

const userSchema = new mongoose.Schema ({
  email: String,
  googleId: String,
  facebookId: String,
  displayName: String
}, {
  versionKey: false

});

userSchema.plugin(passportLocalMongoose);
userSchema.plugin(findOrCreate);

const User = new mongoose.model("User", userSchema);

passport.use(User.createStrategy());

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

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

passport.use(new GoogleStrategy({
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    callbackURL: "http://localhost:3000/auth/google/myaccount"
  },
  function(accessToken, refreshToken, profile, cb) {
     console.log(accessToken);
     console.log(refreshToken);
     console.log(profile);

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

passport.use(new FacebookStrategy({
    clientID: process.env.APP_ID,
    clientSecret: process.env.APP_SECRET,
    callbackURL: "http://localhost:3000/auth/facebook/myaccount",
    passReqToCallback : true,
    profileFields: ['id', 'emails', 'name'] //This
  },
  function(accessToken, refreshToken, profile, cb) {
    console.log(accessToken);
    console.log(refreshToken);
    console.log(profile);

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

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

  app.get('/auth/google/myaccount',
  passport.authenticate('google', { failureRedirect: '/signin' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/myaccount');
  });

  app.get('/auth/facebook',
  passport.authenticate('facebook'), { scope : ['email'] });

app.get('/auth/facebook/myaccount',
  passport.authenticate('facebook', { failureRedirect: '/signin' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/myaccount');
  })

同样对于facebook,我如何获取电子邮件并将其保存在我的MongoDB中。

你能在问题中添加你的代码吗?你能在问题中添加你的代码吗?