I will show you the error:
2017-03-14T22:03:20.176413+00:00 app[web.1]: CastError: Cast to ObjectId failed for value "10100701469924880" at path "_id" for model "User" 2017-03-14T22:03:20.176417+00:00 app[web.1]: at MongooseError.CastError (/app/node_modules/mongoose/lib/error/cast.js:26:11) 2017-03-14T22:03:20.176418+00:00 app[web.1]: at ObjectId.cast (/app/node_modules/mongoose/lib/schema/objectid.js:147:13) 2017-03-14T22:03:20.176419+00:00 app[web.1]: at ObjectId.castForQuery (/app/node_modules/mongoose/lib/schema/objectid.js:187:15) 2017-03-14T22:03:20.176420+00:00 app[web.1]: at cast (/app/node_modules/mongoose/lib/cast.js:229:32) 2017-03-14T22:03:20.176421+00:00 app[web.1]: at Query.cast (/app/node_modules/mongoose/lib/query.js:2987:12) 2017-03-14T22:03:20.176422+00:00 app[web.1]: at Query.findOne (/app/node_modules/mongoose/lib/query.js:1393:10) 2017-03-14T22:03:20.176422+00:00 app[web.1]: at Function.findOne (/app/node_modules/mongoose/lib/model.js:1304:13) 2017-03-14T22:03:20.176423+00:00 app[web.1]: at Function.findById (/app/node_modules/mongoose/lib/model.js:1232:15) 2017-03-14T22:03:20.176424+00:00 app[web.1]: at /app/DB/passportSetUp.js:151:10
10100701469924880 is the id from FB so I don't know why im getting the error
line 151 in /app/DB/passportSetUp.js is where I have do serializing (you could see)
Here is the serialize stuff:
passport.serializeUser(function(user, done){
done(null, user._id);
});
passport.deserializeUser(function(_id, done){
User.findById(_id, function(err, user){
done(err,user);
});
});
routes :
app.get("/login/facebook", passport.authenticate("facebook", {scope: ['email']} ));
app.get("/login/facebook/return",
passport.authenticate("facebook", {failureRedirect:"/login"}),
function(req, res){
res.redirect("/")
}
)
Strategy:
passport.use(new FBstrategy({
clientID : FB.appId,
clientSecret : FB.appSecret,
callbackURL : FB.redirect,
profileFields: ['emails','id', 'first_name', 'gender', 'last_name', 'picture', "link", "verified", "work"]
}, function(accessToken, refreshToken, profile, cb){
console.log(">>>Hit in FACEBOOK<<<<")
console.log("<PROFILE >", profile);
console.log("profile._json > ", profile._json)
console.log("profile.first_name : ",profile.first_name)
fbObject = {
usingFb : true,
fbId : profile.id,
accessToken : accessToken,
photos : profile.photos,
username : profile.name.givenName,
profileImg : profile.profileUrl
}
new User({facebook : fbObject}).save()
.then(fbUser =>{
console.log("FBUSER SAVED", fbUser)
})
.catch(err => {console.log("FB" , err)})
return cb(null, profile)
}))
I do get consoled logged "hit in facebook" .it does seem that I get profile info. It's interesting that in my schema I have usingFb : {type : Boolean, default : false},
but it doesn't change to true when doc is saved I try to do that when I save
in the strategy (usingFb : true,
).
the page gets redirected to
https://authup.herokuapp.com/login/facebook/return?code=AQAwLBI7rkjie13fs1Owh1_7bC2m4nl6JpoJU36l8Vinf2QlDk_aGSLCX7GpYuai4U_V7JQ7a8FWDuz1XO5_CyBpOr6GstWOYTNT2FgFra6nZaIbgPKzzTkXB8NsgXJnvmLpgVLhxtp90C-8lxm7k73_uLMSatd3ps4dxXh6A_b21xZkEbPzZ7_vpFiGOrmd1uiwpxsJecCeEgKsxcAieNcJoKxaavD5lFsX4kjvb_0hRa57LYFpxgwRqS0Sq0ZvL9RCmK_6pLHqPSbgSC1HOwgrQGUYPJj98esutRupcGiBUfa1aXUJlNY0-pikZIale2s#_=_
and an "Error" in the title. I hope that will go away once this Object cast error goes away
Scehma:
const userSchema = new Schema({
local : {
username : String,
password : String,
email : String,
dateCreated : { type: Date, default: Date.now },
profileImg : {type : String , default : "man1.jpg"},
profileQs : Array,
bio : String,
location : String,
repPoints : [repPointsScehma],
reps : Number, //virtual
},
facebook : {
usingFb : {type : Boolean, default : false},
provider : String,
photos : Array,
profileUrl : String,
gender : String,
name : Schema.Types.Mixed,
fbId : String,
accessToken :String,
username : String,
email : String,
dateCreated : { type: Date, default: Date.now },
profileImg : String,
profileQs : Array,
bio : String,
location : String,
repPoints : [repPointsScehma],
reps : Number, //virtual
}
}, {
toObject :{
virtuals : true
},
toJSON : {
virtuals : true
}
});
userSchema.virtual("repPointsToDisplay").get(function(){
if(this.repPoints){
return repPointAdder(this.repPoints)
}
})
via jack blank
No comments:
Post a Comment