Passport-facebook没有收到电子邮件[重复]
Posted
技术标签:
【中文标题】Passport-facebook没有收到电子邮件[重复]【英文标题】:Passport-facebook doesn't get email [duplicate] 【发布时间】:2014-11-08 01:51:39 【问题描述】:我已经使用 express js 和 passport-Facebook 在我的网站中实现了 Facebook-LogIn。它运作良好(我得到了字段资料),但问题是我没有收到电子邮件。我收到一个错误:
email : profile.emails[0].value,
TypeError: 无法读取未定义的属性“0”
我的代码:
passport.use('facebook',new FacebookStrategy(
clientID : config.facebook.id,
clientSecret : config.facebook.secret,
callbackURL : '/auth/facebook/callback',
profileFields : ['id', 'displayName', 'emails','photos']
, function(accessToken, refreshToken, profile, done)
User.findOne(provider_id: profile.id, function(err, user)
if(err) throw(err);
if(!err && user!= null) return done(null, user);
var user = new User(
provider_id : profile.id,
name : profile.displayName,
email : profile.emails[0].value,
photo : profile.photos[0].value,
);
user.save(function(err)
if(err) throw err;
return done(null, user);
);
);
));
如果有人可以帮助我解决我的问题,那就太好了:)
【问题讨论】:
您是否尝试过记录配置文件对象以查看其中包含的内容? 我现在试过了。个人资料不包含电子邮件... 如果不使用 profileFields 参数会怎样? 我有更多信息。但没有电子邮件 也许this question 会有所帮助 【参考方案1】:试试这个passport.authenticate('facebook', scope: [ 'email' ] )
还在 facebookStrategy 中添加一个新字段 profileFields: [ 'email' , 'name' ]
【讨论】:
请写出社区可以理解的更简洁的答案。 感谢您的友好建议。由于我是***的新手,我不熟悉回答的方式。下次我会努力的。【参考方案2】: passport.use(new FacebookStrategy(
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL,
passReqToCallback:true
,
【讨论】:
对答案的简短解释将对 OP 有用【参考方案3】:我遇到了同样的问题。我们有 10 位测试用户,所有 10 位用户都有与他们的 Facebook 帐户相关联的电子邮件地址。但对于 10 名测试人员中的一名,Facebook 没有在配置文件响应中返回“电子邮件”JSON 属性。我不知道为什么,因为它看起来与其他运行良好的 Facebook 个人资料相同。
解决方法是更改此行:
passport.authenticate('facebook')
到这里:
passport.authenticate('facebook', scope: [ 'email' ] )
我仍然无法解释为什么它适用于 9/10,但不适用于 9/10。无论哪种方式,它现在都已修复:-)
【讨论】:
同理:***.com/questions/22880876/… 遇到同样的问题,这有帮助:***.com/questions/20291357/… 请一位测试人员从他的 Facebook 帐户中删除此应用。然后再试一次。它会工作以上是关于Passport-facebook没有收到电子邮件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Passportjs Facebook 登录流程(passport-facebook vs passport-token)
如何在没有会话的情况下整合passport-facebook和jwt?
如何在 MySQL 中使用passport-facebook?
如何在 passport-facebook / Passport.js 中捕获 FacebookAuthorizationError?