节点Facebook Passport仅返回某些字段,无论发送范围如何

时间:2016-05-06 07:26:01

标签: node.js passport.js passport-facebook

我目前正尝试使用Koa-PassportKoajs 2来实施Facebook OAUTH

Everythings工作正常,我可以登录,但不管怎样,但无论我在范围内发送的是什么,我都会得到:

{ passport:
   { user:
      { id: '1015401',
        username: undefined,
        displayName: 'John Doe',
        name: [Object],
        gender: undefined,
        profileUrl: undefined,
        provider: 'facebook',
        _raw: '{"name":"John Doe","id":"1015401"}',
        _json: [Object] } } }

我已尝试添加

似乎在Facebook上工作的

scope: ['email', 'public_profile']因为我可以看到我的应用所要求的信息,所有的东西都在那里。

但是当我点击确定然后我被重定向回我的应用时,我又错过了profile_pic字段和email字段等内容。有关如何获得这些领域的任何信息都将非常感谢。我会在github页面上打开一个问题,但是有一些问题可以追溯到2013年它似乎没有得到很好的维护。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,解决了:执行以下操作:

passport.js中的

添加profileFields

passport.use(new FacebookStrategy({
        clientID: clientID,
        clientSecret: clientSecret,
        callbackURL: callbackURL,
        profileFields: ['id', 'name', 'emails']
      },

'emails'将返回一组电子邮件,因此请获取第一个值:

newUser.facebook.email = profile.emails[0].value;

如果这对您有用,请告诉我们,也许这对其他人也有帮助。