Wednesday, 10 May 2017

Cannot set property 'id' of undefined passport-facebook

I'm try use passport-facebook to login with facebook but I'm get error cannot set id of underfined . Here is my code

model

var userSchema = new Schema({
    facebok:{
        id:String,
        token:String,
        email:String,
        name:String
    }
});

And here is routes

passport.use(new FacebookStrategy({
            clientID: '1952938688317166',
            clientSecret: '776804e688cc1eb238b1c6b211164b69',
            callbackURL: "http://localhost:2912/auth/facebook/callback",
             profileFields: ['id', 'displayName', 'email'],
             callbackUrl :process.env.FB_CALLBACKURL
          },

  function(accessToken, refreshToken, profile, done) {
            process.nextTick(function() {
                User.findOne({'facebook.id':profile.id},function(err,user) {
                    if(err) 
                        return done(err);
                    if(user){
                        return done(null,user);
                    }else{
                        var newUser = new User();
                        newUser.facebook.id = profile.id;
                        newUser.facebook.token = accessToken;
                        newUser.facebook.name  = profile.name.giveName +'' + profile.name.familyName;
                        newUser.facebook.email = profile.emails[0].value;
                        newUser.save(function(err) {
                            if(err)
                                 console.log(err);
                            return done(null,newUser);
                        })
                    }
                });
            });

          }
    ));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }));

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

Where is my wrong? Please help me



via Thanh Tùng

No comments:

Post a Comment