护照 Facebook 集成问题
Passport Facebook integration issues
所以我在将 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
facebookUser.facebook
未定义
你需要声明它,示例:
facebookUser.facebook = {}
其实我发现问题是我用错了模型
从 facebookModel 更改为 userModel。
已解决问题。
所以我在将 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
facebookUser.facebook
未定义
你需要声明它,示例:
facebookUser.facebook = {}
其实我发现问题是我用错了模型
从 facebookModel 更改为 userModel。
已解决问题。