节点Facebook Passport无论发送范围如何,都只返回某些字段
我目前正在尝试使用Koa-Passport
和Koajs 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;
让我们知道,如果这对你有用,也许这将有助于其他人。