Passport-facebook没有收到电子邮件
我已经在我的网站中使用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);
            });
        });
    }));
如果有人可以帮助我解决我的问题,那就太好了:)
回答:
我有同样的问题。我们有10位测试用户,所有10位用户的电子邮件地址都与他们的Facebook帐户相关联。但是对于10个测试人员之一,Facebook在配置文件响应中未返回“email” JSON属性。我不知道为什么,因为它看起来与其他工作正常的Facebook个人资料相同。
解决方法是更改此行:
passport.authenticate('facebook')对此:
passport.authenticate('facebook', { scope: [ 'email' ] })我仍然无法解释为什么它适用于9/10,但不适用于一个。无论哪种方式,现在都已修复:-)
以上是 Passport-facebook没有收到电子邮件 的全部内容, 来源链接: utcz.com/qa/397378.html


