प्रति मैं बहुत देर हो चुकी उत्तर देते सत्यापित करने कॉलबैक
को पहला तर्क हो जाता है, लेकिन मुझे लगता है कि मेरा समाधान बेहतर और अधिक पारंपरिक है। आधिकारिक दस्तावेज here में। वहाँ एक अनुभाग "एसोसिएशन में कॉलबैक सत्यापित करें", जिसमें यह बताया गया है कि अगर हम सच को रणनीति के passReqToCallback विकल्प सेट, इस अनुरोध सक्षम बनाता है और यह सत्यापित करने के लिए पहले तर्क के रूप में पारित हो जाएगा वापस कॉल करें।
तो मेरी FacebookStrategy अब लगता है कि:
var User = require('../models/UserModel.js');
var FacebookStrategy = require('passport-facebook').Strategy;
exports.facebookStrategy = new FacebookStrategy({
clientID: 'REPLACE_IT_WITH_CLIENT_ID',
clientSecret: 'REPLACE_IT_WITH_CLIENT_SECRET',
callbackURL: 'http://localhost:3000/auth/facebook/callback',
passReqToCallback: true
},function(req,accessToken,refreshToken,profile,done){
User.findOne({
'facebook.id' : profile.id
},function(err,user){
if(err){
done(err);
}
if(user){
req.login(user,function(err){
if(err){
return next(err);
}
return done(null,user);
});
}else{
var newUser = new User();
newUser.facebook.id = profile.id;
newUser.facebook.name = profile.displayName;
newUser.facebook.token = profile.token;
newUser.save(function(err){
if(err){
throw(err);
}
req.login(newUser,function(err){
if(err){
return next(err);
}
return done(null,newUser);
});
});
}
});
}
);
मेरी कोड नमूने में मैं डीबी में उपयोगकर्ता की जानकारी और सत्र में उपयोगकर्ता जानकारी की बचत को बचाने के लिए कुछ तर्क जोड़ लिया है। मैंने सोचा कि यह लोगों के लिए सहायक हो सकता है।
req.user पासपोर्ट सत्र में संग्रहीत उपयोगकर्ता की जानकारी देता है।
यह फेसबुक प्रमाणीकरण के साथ भी मेरे लिए काम करता है। – TulioPa
धन्यवाद !! यह एक बड़ी मदद थी। – Tyguy7