我正在使用PassportJS在我的网站上验证Facebook用户 . 棘手的部分是我首先使用简单的Facebook权限登录用户,每个用户在使用Facebook登录时默认授予权限,但是用户(根据他们的行为)稍后可以启用授予Fanpage Admins权限 .
当我想将Fanpage Admin用户重定向到另一个url时,我没有问题处理这两个授权,我不能,因为Passport只允许我为我的Facebook策略设置一个回调URL,因为从Facebook结束的所有回调结束at / auth / facebook / callback .
var passportOptions = {
successRedirect: '/admin/',
failureRedirect: '/'
}
var fbAdminPermissions = {
scope: ["email, manage_pages"]
}
var fbNormalPermissions = {
scope: ["email"]
}
app.get('/auth/facebook', passport.authenticate('facebook', fbNormalPermissions));
app.get('/auth/facebookPages', passport.authenticate('facebook', fbAdminPermissions));
app.get('/auth/facebook/callback', passport.authenticate('facebook', passportOptions));
我需要有多个successRedirect url,具体取决于用户是否授予正常权限或Facebook管理员权限 . 我想将FBAdmins重定向到另一个URL,而不是/ admin root .
如果不创建新的Facebook战略,我怎么能实现这一目标呢?
2 回答
app.get('/ auth / facebook / callback',passport.authenticate('facebook',passportOptions)
实际上应该发送到自定义回调,您可以在其中处理重定向到适当的资源 .
例:
感谢Biba提供的反馈,我可以想出一个转机 . 这是解决方案 . 顺便说一下,'request'模块是我使用的http处理程序,但如果你愿意,可以使用Express''https'模块 .