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

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

一切工作正常,我可以login,什么不是,但不pipe我发送的范围,我只得到:

 { 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] } } } 

我试过添加

scope: ['email', 'public_profile']这似乎在Facebook上工作结束,因为我可以看到我的应用程序正在请求的信息,所有的东西在那里。

但是,当我点击确定,我重新导向回到我的应用程序,再次我失去了像一个profile_pic字段和email字段的东西。 任何有关如何获得这些领域的信息将非常感谢。 我会在github页面上打开一个问题,但是有一些问题可以追溯到2013年,它似乎没有被保留太多。

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

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; 

让我们知道,如果这对你有用,也许这将有助于其他人。