Facebook护照策略没有返回电子邮件字段

时间:2015-12-27 21:15:36

标签: node.js passport.js facebook-authentication

我正在使用Facebook v2.5 API。

路线:

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

config:

passport.use(new FacebookStrategy({

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

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

        ...
    }));

个人资料没有"电子邮件"字段。

我尝试将范围作为数组传递

scope : ['email']

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题:使用我的测试帐户并使用示波器,我突然失去了#34;电子邮件地址,无法使用此处找到的所有提示再次获取它。

奇怪地使用新的Facebook帐户,电子邮件地址出现了。

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

希望这有帮助。

答案 1 :(得分:0)

确保在登录时定义“电子邮件”范围,然后当您询问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',
);