passport-facebook:如何动态设置callbackURL?

Gal*_*aim 16 node.js express passport.js

我正在按照这个例子来设置FacebookStrategy - https://github.com/jaredhanson/passport-facebook/blob/master/examples/login/app.js

我想动态设置callbackURL,即:用户访问/ posts/34所以回调将是/ posts/34/callback

我怎样才能实现这样的目标?

Gal*_*aim 11

我找到了解决方案,auth重定向路由和回调路由都应该用函数(req,res,next)包装passport.authenticate().

我按照http://passportjs.org/guide/authenticate/中的示例进行了自定义回调

以及https://github.com/jaredhanson/passport-facebook/issues/2中有关自定义callbackURL 的注释


And*_*iga 7

我使用这个解决方案,很容易.我保存了会话中的最后一个网址并在之后收集它.如果你直接将回调网址传递给fb,你需要允许所有不同的路由,这是一个非常hazzle.

  app.get '/auth/facebook/', routesService.clean, (req, res, next) ->
    req.session.redirect = req.query.redirect if req.session? && req.query.redirect?
    passport.authenticate('facebook', { scope: ['user_friends'] }) req, res, next
    return

  app.get '/auth/facebook/callback', passport.authenticate('facebook', failureRedirect: '/login'), (req, res) ->
        # Successful authentication, redirect home.
        if req.session?.redirect?
          rediredUrl = req.session.redirect
          delete req.session.redirect
          res.redirect '/#!'+ rediredUrl
        else
          res.redirect '/'
        return
Run Code Online (Sandbox Code Playgroud)