我一直在使用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 获得更多范围的方式吗?我会以错误的方式解决这个问题吗?
谢谢!!!