Node.js Passport Facebook身份validation没有电子邮件返回
我正在尝试使用来自node.js的护照设置Facebook身份validation。 当我运行该应用程序,并去/ auth /脸书,我去脸书页面给予Facebook的许可,以返回我的电子邮件。 但是,当我点击确定后,我得到一个页面(callback),说:“没有电子邮件与此帐户关联! 根据代码,这意味着profile.emails为空。 我错过了什么?
这些是我启动应用程序时显示的警告。 我不知道他们是否是问题。
express-session deprecated undefined resave option; provide resave option auth.js:44:37 express-session deprecated undefined saveUninitialized option; provide saveUninitialized option auth.js:44:37
这是授权码。 我正在阅读edx的介绍MEAN堆栈课程M101X。
function setupAuth(User, app) { var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; // High level serialize/de-serialize configuration for passport passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(id, done) { User. findOne({ _id : id }). exec(done); }); // Facebook-specific passport.use(new FacebookStrategy( { clientID: process.env.FACEBOOK_CLIENT_ID, clientSecret: process.env.FACEBOOK_CLIENT_SECRET, callbackURL: 'http://localhost:3000/auth/facebook/callback' }, function(accessToken, refreshToken, profile, done) { if (!profile.emails || !profile.emails.length) { return done('No emails associated with this account!'); } User.findOneAndUpdate( { 'data.oauth': profile.id }, { $set: { 'profile.username': profile.emails[0].value, 'profile.picture': 'http://graph.facebook.com/' + profile.id.toString() + '/picture?type=large' } }, { 'new': true, upsert: true, runValidators: true }, function(error, user) { done(error, user); }); })); // Express middlewares app.use(require('express-session')({ secret: 'this is a secret' })); app.use(passport.initialize()); app.use(passport.session()); // Express routes for auth app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email'] })); app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/fail' }), function(req, res) { res.send('Welcome, ' + req.user.profile.username); }); } module.exports = setupAuth;
您是否尝试在passport.use块内添加profileFields,就像该课程的“讨论”选项卡中的“Facebook身份validation问题”下所示?
- PUT /更新操作在$资源AngularJS客户端在基于rest的应用程序(mongoose插入/更新问题)失败。
- 混合passport-facebook和passport-jwt的最佳方法是什么?
- MongoDB的。 如何更新数组内的json属性
- 未捕获的ReferenceError:未定义angular度 – Mean.IO
- 如何发送post请求到cloud9中的server.js
- 确定用户在查询中的每个对象的权限?
- 使用具有Sequelize(ORM)的Node.js中现有的Postgres-DB,
- 跨源请求被阻止 – NodeJs
- Mongoose.findOneAndUpdate()不创build新文档