Я использую strategy.js google strategy для аутентификации и входа в приложение. Ошибка входа в систему работает отлично, но данные пользователя не хранятся в БД. Я не упоминал ничего в моделях UserSchema. Я пробовал, как показано ниже.
passport.use(new GoogleStrategy({
clientID : config.googleAuth.clientID,
clientSecret : config.googleAuth.clientSecret,
callbackURL : config.googleAuth.callbackURL
passReqToCallback : true
},
function(token, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({ 'google.id' : profile.id }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, user);
} else {
var newUser = new User();
newUser.google.id = profile.id;
newUser.google.token = token;
newUser.google.name = profile.displayName;
newUser.google.email = profile.emails[0].value; // pull the first email
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
}));
router.get('/pages/auth/loginWithGoogle', passport.authenticate('google', { scope : ['profile', 'email'] }));
router.get('/auth/google/callback', passport.authenticate('google', {
successRedirect : '/invite-friends',
failureRedirect : '/pages/auth/login'
}));
Попробуйте сделать следующее:
...
newUser['google.id'] = profile.id;
newUser['google.token'] = token;
newUser['google.name'] = profile.displayName;
newUser['google.email'] = profile.emails[0].value;
...