Using everyauth, the first time a user login, a profile is added to my mongodb via mongoose and the session works well. The second time a user tries to login, the server crashes with the following error:
/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/modules/everymodule.js:352
throw err;^ TypeError: Cannot read property ‘id’ of undefined at
Object._addToSession
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/modules/oauth2.js:195:46)
at Object.exec
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/step.js:48:21)
at
/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:19:38
at [object Object].fulfill
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)
at
/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:22:23
at [object Object].callback
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:13:12)
at
/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:21:23
at [object Object].fulfill
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)
at
/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:22:23
at [object Object].fulfill
(/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)
The following is my code:
.findOrCreateUser( function (session, accessToken, accessTokExtra, fbUserMetadata) {
//Verifies if user in database already
try{
var id = fbUserMetadata.id;
var promise = this.Promise();
User.findOne({ fbid: id}, function(err, result) {
var user;
if(!result) {
user = new User();
user.fbid = id;
user.firstName = fbUserMetadata.first_name;
user.lastName = fbUserMetadata.last_name;
user.save();
} else {
user = result.doc;
}
promise.fulfill(user);
});
return promise;
}
catch(err){
console.log(err);
}
})
I use mongoose and express.
Untested, but from looking at your code, it looks like you need to change this line:
to this: