2013-01-01 13 views
15

मैं सेटअप करने के लिए यह उदाहरण एक FacebookStrategy अनुसरण कर रहा हूँ - https://github.com/jaredhanson/passport-facebook/blob/master/examples/login/app.jsपासपोर्ट-फेसबुक: गतिशील रूप से callbackURL कैसे सेट करें?

मैं गतिशील callbackURL सेट करना चाहते हैं, अर्थात्: उपयोगकर्ता पहुँच/पदों/34 तो कॉलबैक किया जाएगा/पदों/34/कॉलबैक

मैं इस तरह कुछ कैसे प्राप्त कर सकता हूं?

उत्तर

7

मुझे समाधान पता चला, दोनों ऑथ रीडायरेक्ट रूट और कॉलबैक मार्ग को पासपोर्ट (प्रमाणीकरण, res, अगला) के साथ passport.authenticate() लपेटना चाहिए।

मैं कस्टम कॉलबैक

के लिए http://passportjs.org/guide/authenticate/ में उदाहरण और कस्टम callbackURL के लिए https://github.com/jaredhanson/passport-facebook/issues/2 टिप्पणी

3

मैं इस समाधान का उपयोग करें, यह काफी आसान है का पालन किया। मैं सत्र में अंतिम यूआरएल बचाता हूं और बाद में इसे इकट्ठा करता हूं। यदि आप कॉलबैक यूआरएल को सीधे एफबी पास करते हैं तो आपको उन सभी अलग-अलग मार्गों को अनुमति देने की आवश्यकता है जो काफी हद तक चमकदार हैं।

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 
1

बस गल के जवाब पर निम्नलिखित, यहाँ है कि संयुक्त समाधान:।

app.get('/auth/facebook', (req, res, next) => { 
    passport.authenticate('facebook')(req, res, next) 
}) 

app.get("/auth/facebook/callback", (req, res, next) => { 
    passport.authenticate('facebook', (err, user, info) => { 
    if (err) { return next(err); } 
    if (!user) { return res.redirect('/login')} 
    req.logIn(user, function(err) { 
     if (err) { return next(err); } 
     return res.redirect('/users/' + user.uid) 
    }); 
    })(req, res, next) 
}) 

नोट आप विशेष रूप में उपयोगकर्ता लॉग इन करना होगा कि

संबंधित मुद्दे