我正在尝试使用 PassportJS 进行一些基本的 Google 身份验证。网络上的信息量似乎相当有限,我不断遇到问题,所以我想我会在这里尝试。
我正在使用来自https://github.com/mattgaidica/twitter-mongo的代码,并进行了一些修改以将其用于 Google OAuth(它不使用 Twitter 密钥,它使用 passport-google,passport.authenticate('google', ...)
)。
我一直以这个错误结束:'Error: failed to serialize user into session'
passport.serializeUser(function(user, done) {
console.log(user); //does not have the fields we created earlier, user.uid does not exist.
done(null, user.uid);
});
我的护照策略:
passport.use(new GoogleStrategy({
returnURL: "http://localhost:3000/auth/google/callback"
},
function(identifier, profile, done) {
User.findOne({uid: profile.id}, function(err, user) {
if(user) {
done(null, user);
} else {
var user = new User();
user.provider = "google";
user.uid = identifier;
user.name = profile.displayName;
user.save(function(err) {
if(err) { throw err; }
done(null, user);
});
}
})
}
));
这个其他用户的字段与最初创建的不一样,其他用户发生了什么?
我对这里发生的事情有点迷茫,如果有人能让我知道我做错了什么,我将不胜感激。