Node.js Facebook passport策略不返回电子邮件字段

Node.js Facebook passport策略不返回电子邮件字段,node.js,passport.js,facebook-authentication,Node.js,Passport.js,Facebook Authentication,我正在使用Facebook v2.5 API 路线: app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' })); 配置: passport.use(new FacebookStrategy({ clientID: CLIENTID, clientSecret: CLIENTSECRET, callbackURL: callbackURL,

我正在使用Facebook v2.5 API

路线:

app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));
配置:

passport.use(new FacebookStrategy({

        clientID: CLIENTID,
        clientSecret: CLIENTSECRET,
        callbackURL: callbackURL,
        profileFields: ["emails", "displayName", "gender"]
    },

    function (token, refreshToken, profile, done) {
        console.log(profile) 

        ...
    }));
配置文件没有“电子邮件”字段

我也尝试以数组的形式传递scope

scope : ['email']

我只是遇到了同样的问题:使用我的测试帐户并使用scope,我突然“丢失”了电子邮件地址,使用这里找到的所有提示无法再次获得它

奇怪的是,在使用一个新的facebook帐户时,这个电子邮件地址出现了

=>我访问了我在facebook上的测试帐户,并在那里撤销了我的应用程序的所有权限。之后,我再次登录我的应用程序,并授予所有需要的权利。从那时起,我再次收到电子邮件地址

希望这能有所帮助。

请确保在登录时定义“电子邮件”范围,然后当您询问graph.facebook.com时,您可以得到它:

$url = 'https://www.facebook.com/dialog/oauth';
$params = array(
    'client_id' => $this->strategy['app_id'],
    'redirect_uri' => $this->strategy['redirect_uri'],
    'scope' => 'email',
);

除了我的代码提供了所有解决方案之外,可能存在重复。如何撤销应用程序权限?有同样的问题,看不到FB允许我在哪里管理权限。@DanDonaldson:在你的FB帐户中转到设置,然后转到应用程序。在那里,您应该可以看到所有使用您的FB帐户登录的应用程序。选择一个应用程序并编辑访问权限或撤消访问权限。