Проблема с получением данных из MongoDB с использованием паспорта facebook ID - PullRequest
0 голосов
/ 10 июля 2020
• 1000 Я использую паспорт, но "req.user" не определен. Вот код, который я установил с паспортом для входа в facebook.
const passport = require('passport');
const FacebookStrategy = require('passport-facebook').Strategy;
const User = require('../models/user');
const keys = require('../config/keys');

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

passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

passport.use(new FacebookStrategy({
        clientID: keys.facebookAppID,
        clientSecret: keys.facebookAppSecret,
        profileFields: ['email', 'name', 'photos'],
        callbackURL: "http://localhost:3000/auth/facebook/callback",
        proxy: true
    },
    function(accessToken, refreshToken, profile, done) {
        //console.log(profile);
        User.findOne({ facebook: profile.id}, (err, user) => {
          if(err) {
              return done(err);
          }
          if(user) {
              return done(null,user);
          } else {
              const newUser = {
                  facebook: profile.id,
                  fullname: profile.displayName,
                  image: `https://graph.facebook.com/${profile.id}/picture?type=large`,
                  email: profile.emails[0].value
              }
              new User(newUser).save((err, user) => {
                  if(err) {
                      return done(err);
                  }
                  if(user) {
                      return done(null, user);
                  }
              });
          }
        })
    }
));

Итак, когда пользователь входит в систему с facebook, я хочу, чтобы идентификатор вернулся, выполните поиск в MongoDB, чтобы заполнить пользователей профиль.

...