所以我在将Facebook集成到我的应用程序时遇到了麻烦。
这是我的Facebook身份验证码:
passport.use('facebook', new FacebookStrategy({
clientID: passportConfig.FACEBOOK_APP_ID,
clientSecret: passportConfig.FACEBOOK_APP_SECRET,
callbackURL: "http://localhost:3000/auth/facebook/callback"
}, function(accessToken, refreshToken, profile, done) {
facebookModel.findOne({'facebook.facebookId' : profile.id}, function(err, user) {
if (err) {
return done(err);
}
if (user) {
done(null, user);
}else {
var facebookUser = new facebookModel();
facebookUser.facebook.facebookId = profile.id;
facebookUser.facebook.token = accessToken;
facebookUser.facebook.name = profile.displayName;
facebookUser.save(function(error){
if (error) {
console.log("Error logging into Facebook.");
}else {
done(null, facebookUser);
}
});
}
});
}));
这是我的模特:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
local : {
fname : String,
lname : String,
username : String,
email : String,
password : String
},
facebook : {
facebookId : String,
token : String,
name : String
}
});
module.exports = mongoose.model('User', userSchema);
但是我一直收到错误。
在后端
FacebookUser.facebook.facebookId = profile.id;
TypeError: Cannot set property 'facebookId' of undefined
但是我确实看到我的个人资料对象有一个id。
在前端
GET http://localhost:3000/auth/facebook/callback?code=AQB3NfQB7WP ..... net::ERR_CONNECTION_REFUSED
答案 0 :(得分:0)
facebookUser.facebook
未定义
你需要声明它,样本:
facebookUser.facebook = {}
答案 1 :(得分:0)
实际上我发现我使用错误的模型出了什么问题。
从facebookModel更改为userModel。
解决了问题。