ich es zu spät bin zu antworten, aber Ich denke, dass meine Lösung besser und konventioneller ist. In der offiziellen Dokumentation here. Es gibt einen Abschnitt „Verband in Rückruf Überprüfen“, in dem darauf hingewiesen wird, dass, wenn wir die Strategie der gesetzt passReqToCallback Option wahr, dies ermöglicht erf und es wird als erstes Argument an die Verifizierungs weitergegeben Rückrufen.
Also mein FacebookStrategy sieht nun wie:
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);
});
});
}
});
}
);
In meinem Code Probe ich einige Logik hinzugefügt haben Benutzer Informationen in DB und Speichern von Benutzerdaten in der Sitzung zu speichern. Ich dachte, es könnte für Leute hilfreich sein.
req.user gibt die Informationen des Benutzers in Pass Sitzung gespeichert.
Das funktioniert auch bei mir mit Facebook-Authentifizierung. – TulioPa
Danke !! Das war eine große Hilfe. – Tyguy7