2015-09-24 7 views
6

में दिखाए बिना मैं कैसे पासपोर्ट-फेसबुक का उपयोग कर रहा हूं, मैं एक मीन स्टैक वेबपैप में लॉगिन करने के लिए पासपोर्ट-फेसबुक का उपयोग कर रहा हूं। सफल लॉगिन के बाद, मैं एक JSON वेब टोकन (jwt) उत्पन्न करना चाहता हूं और अपने एसपीए में एक पृष्ठ पर रीडायरेक्ट करना चाहता हूं। (res.redirect ('/ #/posts /' + doc.generateJWT()); - कृपया नीचे दिए गए कोड को देखें)।पासपोर्ट-फेसबुक के साथ जेसन वेब टोकन (jwt) को रीडायरेक्ट यूआरएल

मेरा प्रश्न है: मैं यूआरएल में इसे दिखाए बिना रीडायरेक्ट पेज पर जेडब्ल्यूटी कैसे भेजूं?

कोड:

passport.serializeUser(function(user, done) { 
    done(null, user); 
}); 

passport.deserializeUser(function(obj, done) { 
    done(null, obj); 
}); 


passport.use(new FacebookStrategy({ 
    clientID: FACEBOOK_APP_ID, 
    clientSecret: FACEBOOK_APP_SECRET, 
    callbackURL: FACEBOOK_CALLBACKURL 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    process.nextTick(function() { 
     User.findOne({'fbid':profile.id},function(err, docs) {     
       if (err){ 
       //console.log('Error in SignUp: '+err); 
       return res.status(401).json(info); 
       }     
       else { 
        if (docs) { 
         //console.log('User already exists'); 
         globalid = profile.id; 
         return done(null,docs); 
        } else { 
         // if there is no user with that fbid 
         // create the user 
         var newUser = new User(); 
         // set the user's local credentials 
         newUser.fbid = profile.id; 
         globalid = profile.id; 

         newUser.firstname = profile.name.givenName; 
         newUser.lastname = profile.name.familyName; 
         newUser.gender = profile.gender; 
         if(profile.emails){ 
         newUser.fbemail = profile.emails[0].value; 
         }; 
         newUser.fblink = profile.profileUrl; 
         newUser.fbverified = profile.verified; 

         // save the user 
         newUser.save(function(err) { 
          if (err){ 
          //console.log('Error in Saving user: '+err); 
          return res.status(401).json(info); 
          } 
          //console.log('User Registration succesful'); 
          return done(null, newUser); 
         }); 
        } 
       } 
       }); 
    }); 
})); 

var router = express.Router(); 

router.get('/auth/facebook', 
    passport.authenticate('facebook', { scope : 'email' } 
)); 

router.get('/auth/facebook/callback', 
    passport.authenticate('facebook', { session: false, failureRedirect: '/'}), 
    function(req, res,done) { 
    var redirection = true; 
    User.findOne({ 'fbid': globalid }, function (err, doc){ 
      //console.log("Generating token"); 
      doc.token = doc.generateJWT(); 
      doc.save(function(err) { 
       if (err){ 
       //console.log('Error in Saving token for old user: '+err); 
       return res.status(401).json(info); 
       } 
      else 
      { 
       //console.log('User Login succesful'); 
       redirection = doc.mobileverified; 
       //console.log(redirection); 
       //return done(null, doc); 
       if(doc.mobileverified === true){ 
        console.log("Token:",doc.generateJWT());      
        res.redirect('/#/posts/'+ doc.generateJWT()); 
       } 
       else{ 

        console.log("Token:",doc.generateJWT()); 
        //res.json({token: doc.generateJWT()}); 
        res.redirect('/#/register/' + doc.generateJWT());           
       } 
      } 
      }); 
     }); 
    }); 

पहले से कई धन्यवाद!

उत्तर

14

आप यूआरएल पर अपने टोकन दिखाने चाहते हैं नहीं है, तो आप

var fbOptions = { 
    clientID: FACEBOOK_APP_ID, 
    clientSecret: FACEBOOK_APP_SECRET, 
    callbackURL: FACEBOOK_CALLBACKURL 
}; 
passport.use(new FacebookStrategy(fbOptions, function(token, refreshToken, profile, done) { 
    var user = profile; 
    // NOTE: ‘my_token’ we will use later 
    user.my_token = 'generate your jwt token'; 
    done(null, user); 
})); 

और फिर अपने रूटर पर

app.get('/auth/facebook/callback', passport.authenticate('facebook', {session: false, failureRedirect : '/'}), function(req, res) { 
// The token we have created on FacebookStrategy above 
var token = req.user.my_token; 
res.json({ token: token }); 
}); 
+0

असल में भले ही json के रूप में टोकन लौट json के रूप में प्रतिक्रिया भेजने के लिए आप JSON में हेडर के रूप में इसे भेजते हैं, क्लाइंट के लिए कॉलबैक के कारण इसे पकड़ना असंभव है। –

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