【问题标题】:Facebook-passport strategy not returning emails fieldFacebook-护照策略不返回电子邮件字段
【发布时间】:2016-04-01 19:04:04
【问题描述】:

我正在使用 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 : ['email']

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我刚刚遇到了同样的问题:使用我的测试帐户并使用范围时,我突然“丢失”了电子邮件地址,无法使用此处找到的所有提示再次获取它。

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

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

    希望这会有所帮助。

    【讨论】:

    • 如何撤销应用权限?遇到同样的问题,看不到FB允许我在哪里管理权限。
    • @DanDonaldson:进入您的 FB 帐户进入设置,然后进入应用程序。在那里,您应该看到所有使用您的 FB 帐户登录的应用程序。选择一个应用并编辑访问权限或撤销它们。
    猜你喜欢
    • 2015-12-12
    • 2023-03-11
    • 2016-04-28
    • 2016-03-13
    • 2016-11-10
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多