护照,脸书不收取电子邮件
我已经在我的网站上使用快递公司和护照Facebook实施了Facebook-LogIn。 它运作良好(我得到现场configuration文件),但问题是,我没有得到电子邮件。 我收到一个错误:
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); }); }); }));
这将是伟大的,如果有人可以帮我解决我的问题:)
我有同样的问题。 我们有10个testing用户,所有10个用户都有与他们的Facebook账户相关的电子邮件地址 但是对于这10个testing人员中的一个,Facebook在configuration文件响应中没有返回“email”JSON属性。 我不知道为什么,因为它看起来是相同的其他Facebookconfiguration文件工作正常。
解决办法是改变这一行:
passport.authenticate('facebook')
对此:
passport.authenticate('facebook', { scope: [ 'email' ] })
我仍然无法解释为什么它在9/10工作,但不是一个。 无论哪种方式,它现在是固定的:-)
试试这个passport.authenticate('facebook', { scope: [ 'email' ] })
还要在facebookStrategy中添加一个新的字段profileFields: [ 'email' , 'name' ]
passport.use(new FacebookStrategy({ clientID: config.facebook.clientID, clientSecret: config.facebook.clientSecret, callbackURL: config.facebook.callbackURL, passReqToCallback:true },
- 如果函数不使用任何I / O,NodeJSasynchronous函数的目的是什么?
- Express-mysql-session阻止passport deserializeUser运行
- req.session.passport为空,反序列化用户未调用 – ExpressJS,护照
- 护照本地策略不保存cookie或会话中的用户
- Passport.js – 在会话中存储信息
- 从节点(服务器到服务器)Node / Express使用请求中获取来自Restful API的数据
- 与MainGun的Nodemailer
- 无法在Layer.session – ExpressJS会话中读取未定义的属性“connect.sid”
- 正确的标题,但铬说:“资源解释为文档”