0

我一直在使用everyauth 和 Facebook 进行用户身份验证,一切正常。现在,我想集成一个发布到 Facebook 的功能。由于我的应用仅在用户首次登录时要求提供电子邮件范围,因此我需要获得更大的 FB 范围,并尝试遵循 FB 指南,仅在需要时才要求提供此额外范围。

我根据文档将以下代码添加到我的everyauth 配置中:

everyauth
.facebook
    .appId(conf.fb.appId)
    .appSecret(conf.fb.appSecret)
    //TODO add custom redirect for when authentication is not approved
    .scope(function (req, res) {
        console.log('Setting FB scope');
        console.log('Session: ' + util.inspect(req.session));
        var session = req.session;
        switch (session.userPhase) {
            case 'share-media':
                return 'email,user_status';
            default:
                return 'email';
        }
     })

当未经身份验证的用户登录应用程序时,一切都很好。问题是,当我想在 FB 范围上“加大赌注”时,我通过将 req.session.userPhase 设置为“share-media”,然后提供指向 /auth/facebook 的链接以确认他们想要允许发布到 FB。发生这种情况时,我从上面的代码中得到一个错误,即 req.session 未定义(所有 req 都未定义)。

我认为这是因为以前登录的用户本质上是在重新进行身份验证,但这不是我如何从 Facebook 获得更多范围的方式吗?我会以错误的方式解决这个问题吗?

谢谢!!!

4

0 回答 0