具有一个简单的身份验证应用程序,该应用程序连接到Google OAuth,然后将用户保存到数据库中。它是Express,Passport和MongoDB / Mongoose的Node应用。
致电Google并选择正确的登录帐户后,我收到了返回的数据,并尝试将其保存到MongoDB Atlas(版本4.03)托管的数据库中。数据库为空,因此它不应该有现有用户,但是它似乎进入了const existingUser
行,并且永远挂起,没有错误消息或其他任何内容。当我删除existingUser并尝试创建新用户时,它执行相同的操作并挂起。我已经注销了User实例,并且使用列出的必要功能它看起来正确。肯定也连接到数据库。
const mongoose = require('mongoose');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('../config/keys');
const User = mongoose.model('users');
passport.use(new GoogleStrategy({
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback',
proxy: true,
}, async (accessToken, refreshToken, profile, done) => {
const userObject = {
id: profile.id,
externalAccounts: [{
google: [{
id: profile.id,
displayName: profile.displayName,
}]
}]
}
const existingUser = await User.findOne({ id: profile.id });
if (existingUser) {
console.log('found existing user');
return done(null, existingUser);
}
const user = await new User(userObject).save();
console.log('created new user', user);
done(null, user);
})
);