Я очень новичок в стеке MEAN, и это может показаться очень наивным или неправильным, но я хочу спросить, когда мы аутентифицируем использование паспорт facebook стратегии, используя следующий код:Использование паспорт-facebook без пользователя Mongoose (нет Монго в стеке MEAN)
var FacebookStrategy = require('passport-facebook').Strategy;
var User = require('../models/user');
var fbConfig = require('../fb.js');
module.exports = function(passport) {
passport.use('facebook', new FacebookStrategy({
clientID : fbConfig.appID,
clientSecret : fbConfig.appSecret,
callbackURL : fbConfig.callbackUrl
},
// facebook will send back the tokens and profile
function(access_token, refresh_token, profile, done) {
console.log('profile', profile);
// asynchronous
process.nextTick(function() {
// find the user in the database based on their facebook id
User.findOne({ 'id' : profile.id }, function(err, user) {
// if there is an error, stop everything and return that
// ie an error connecting to the database
if (err)
return done(err);
// if the user is found, then log them in
if (user) {
return done(null, user); // user found, return that user
} else {
// if there is no user found with that facebook id, create them
var newUser = new User();
// set all of the facebook information in our user model
newUser.fb.id = profile.id; // set the users facebook id
newUser.fb.access_token = access_token; // we will save the token that facebook provides to the user
newUser.fb.firstName = profile.name.givenName;
newUser.fb.lastName = profile.name.familyName; // look at the passport user profile to see how names are returned
//newUser.fb.email = profile.emails[0].value; // facebook can return multiple emails so we'll take the first
// save our user to the database
newUser.save(function(err) {
if (err)
throw err;
// if successful, return the new user
return done(null, newUser);
});
}
});
});
}));
};
мне не нужно хранить информацию о пользователях в любом хранилище данных. Я хочу сохранить токен только во время входа пользователя в мое веб-приложение, в основном мне не нужно использовать Mongo, потому что все данные, которые будут отображаться в веб-приложении, будут поступать из Facebook api, для например, сообщения для профиля, количество понравившихся на определенных сообщениях и т. д. Мне не нужно иметь бэкэнд как таковой, потому что, если я храню данные в любом хранилище данных, таком как Mongo, при следующем входе в систему пользователя данные будут устаревшими (в некотором роде Facebook api - это своего рода бэкэнд), и я также хочу, чтобы обновления для информации о любых постах, сделанных в Facebook, должны обновляться в реальном времени в моем веб-приложении, например если кому-то нравится сообщение на реальной странице Facebook, количество понравившихся на моем веб-приложении также должно быть обновлено в реальном времени, поэтому сначала не нужно сначала выводить данные из SDK Facebook, а затем хранить его в Монго, почему бы просто не дать его к контроллеру, и оттуда представление может представить данные. Если мой подход неправильный, пожалуйста, исправьте меня.
Таким образом, каждый раз, когда пользователь регистрируется в токене доступа, создается и используется для этого сеанса, когда пользователь выходит из системы, токен доступа уничтожается и полностью исключает необходимость хранения токена и любых данных, используя SDK для Facebook.
Что я думал о том, чтобы использовать в основном угловые модели обработки данных, поступающих из SDK Facebook, а затем контроллер может выполнять свою работу в сочетании с представлениями. – user37940