护照 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);

但是我一直收到错误消息。

在后端

但是我确实看到我的个人资料对象有一个 ID。

在前端

facebookUser.facebook 未定义 你需要声明它,示例:

facebookUser.facebook = {}

其实我发现问题是我用错了模型

从 facebookModel 更改为 userModel。

已解决问题。