我一直在使用这个:
作用域['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);
});发布于 2016-09-15 07:59:12
您在寻找哪些特定的字段?
电子邮件实际上是profile.emails,它是一个数组,因此您必须使用索引来获取默认值
profile.emails
名称实际上是另一个对象
profile.name.givenName
profile.name.familyName
profile.name.middleName
您可以使用util将配置文件对象打印到控制台以查看字段
从‘util’导入工具;
console.log(util.inspect(profile,{showHidden: false,depth:空}))
在打印时,您还可以从facebook响应中找到原始的json
_json
https://stackoverflow.com/questions/39473671
复制相似问题