2015-12-27 55 views
-2

我正在使用Facebook V2.5 API。Facebook护照策略不返回电子邮件字段

路线:

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 : ['email'] 
+0

的可能的复制[护照Facebook的没有得到电子邮件(HTTP:/ /stackoverflow.com/questions/25832763/passport-facebook-dont-get-email) –

+0

除了我的代码已提供所有解决方案。 –

回答

0

我有同样的问题:用我的测试帐户,并与范围的工作,我突然“失去”的电子邮件地址,没有办法得到它再次使用这里找到的所有提示。

好奇地使用一个新的Facebook帐户,电子邮件地址出现。

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

希望这会有所帮助。

+0

你如何撤消应用程序权限?有同样的问题,不能看到FB允许我管理权利。 –

+0

@DanDonaldson:进入你的FB账户设置,然后到应用程序。在那里你应该看到使用你的FB帐户登录的所有应用程序。选择一个应用程序并编辑访问权限或撤消它们。 – Chrigel

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', 
); 
相关问题