Node.js Passport facebook返回除id和displayName之外的未定义字段

Node.js Passport facebook返回除id和displayName之外的未定义字段,node.js,express,passport.js,passport-facebook,Node.js,Express,Passport.js,Passport Facebook,我一直在使用这个: 范围['email','public_profile'] 字段['emails'、'id'、'displayName'、'name'、'photos'] 有人解决了这个问题吗? 我在这里读了很多答案。但没有人为我工作,或者他们已经过时(2012/13年左右) 只是一个默认的护照代码: // Configure Facebook auth Strategy // ==========================================================

我一直在使用这个:

范围
['email','public_profile']

字段
['emails'、'id'、'displayName'、'name'、'photos']

有人解决了这个问题吗? 我在这里读了很多答案。但没有人为我工作,或者他们已经过时(2012/13年左右)

只是一个默认的护照代码:

// Configure Facebook auth Strategy
// ==================================================================
passport.use(new FacebookStrategy({
  clientID: CONFIG.facebook.id,
  clientSecret: CONFIG.facebook.secret,
  callbackURL: `${CONFIG.url}/${CONFIG.routes.auth}/facebook-token`,
  fields: ['emails', 'id', 'displayName', 'name', 'photos']
}, (accessToken, refreshToken, profile, cb) => {
  console.log(profile, accessToken, refreshToken);
  Account
    .findOne({'facebook.id': profile.id})
    .then(account => {
      if (account) {
        cb(null, account);
      } else {
        // Sign up data to profile
      }
    })
    .catch(err => cb(err));
}));
以及适当的路线:

  // Route to request Facebook token
  // ==================================================================
  router.get(`/${URL}/facebook`, passport.authenticate('facebook', {failWithError: true, scope: ['email', 'public_profile']}));

  // Route to recieve Facebook data
  // ==================================================================
  router.get(`/${URL}/facebook-token`, passport.authenticate('facebook', {failWithError: true}), (req, res) => {
    console.log('Facebook', req.session, req.user, req.account);
  });

你在寻找哪些特定领域

电子邮件实际上是profile.emails,它是一个数组,因此您必须使用索引来获取默认值

个人资料.电邮[0]

这个名字实际上是另一个对象

profile.name.givenName

profile.name.familyName

profile.name.middleName

您可以使用util将概要文件对象打印到控制台以查看字段

从“util”导入util

log(util.inspect(profile,{showHidden:false,depth:null}))

打印时,您还可以从facebook响应中找到原始json,这是

_json


请显示一些代码。请参阅答案。。。。。