Javascript Google OAUTH没有在MongoDB中存储电子邮件?
当用户通过Google-OAUTH2.0注册时,我可以将整个console.log配置文件记录下来,但是如何将整个console.log输出保存在我的userDB 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
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中。你能在问题中添加你的代码吗?你能在问题中添加你的代码吗?