gpt4 book ai didi

node.js - facebook-pasport 的回调可以动态构造吗?

转载 作者:IT老高 更新时间:2023-10-28 23:09:01 27 4
gpt4 key购买 nike

使用 facebook-passport 时,通常要做的是在您使用的 FacebookStrategy 的构造函数中指定 redirect_uri,如下所示:

passport.use("facebook", new FacebookStrategy({
//TODO: Correctly configure me
clientID: "XXXXXXX"
, clientSecret: "XXXXXXXXX"
, callbackURL: "http://localhost:3007/auth/facebook/callback"
},
function(accessToken,refreshToken,profile,done) {
User.findByFacebookId(profile.id, function(err,user) {
if(err){ return done(err);}
if(!user){ return done(null,false)}
return done(null, user);
});
})
);

然后你会像这样设置路线:

app.get('/auth/facebook/login', passport.authenticate('facebook') );
app.get('/auth/facebook/login_callback', passport.authenticate('facebook', {
successRedirect:"/login_ok.html"
, failureRedirect:"/login_failed.html"
}
))

是否可以更改回调 url,使其包含传递给初始登录调用的参数的信息?

注意:这个问题更多是为了保留我花了一段时间才解决的信息,以避免其他人走上同样的道路。

最佳答案

我使用这里的一些信息找到了答案 https://github.com/jaredhanson/passport-facebook/issues/2并通过挖掘 Passport oauth2组件确定回调uri的方式,以及本页底部有关 Passport 自定义回调的信息http://passportjs.org/guide/authenticate/ .

这是一个将调用映射到 /auth/facebook/login/1234 以使用回调 /auth/facebook/login_callback/1234

的示例
app.get('/auth/facebook/login/:id', function(req,res,next) {
passport.authenticate(
'facebook',
{callbackURL: '/auth/facebook/login_callback/'+req.params.id }
)(req,res,next);
});

app.get('/auth/facebook/login_callback/:id', function(req,res,next) {
passport.authenticate(
'facebook',
{
callbackURL:"/auth/facebook/login_callback/"+req.params.id
, successRedirect:"/login_ok.html"
, failureRedirect:"/login_failed.html"
}
) (req,res,next);
});

关于node.js - facebook-pasport 的回调可以动态构造吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com