现在我正在使用 mongoose-auth 的 Facebook Connect。一切正常,并且正在通过我的 mongodb 服务器创建/登录用户。
但是,我想覆盖 findOrCreateUsers,因为我想在注册时为每个新用户分配一个随机“代码”,并将其放在他们的 db.users 配置文件中。
所以我查看了mongoose-auth/lib/facebook
,并将这 3 个 facebook 模块文件复制到我自己的目录 [everyauth.js、index.js、schema.js] 中。为了运行一个简单的测试,我基本上从我的目录中包含了我自己的everyauth.js,并使用了它的 findOrCreateUsers 方法而不是默认的方法。
它有效,但有一个错误。登录/创建用户后,req.user
未定义。(req.loggedIn
显示 True,耶!)
我知道这是一个新库,但如果您使用过它(或对 Node.js 有很多了解),如果您能帮助我,我将不胜感激。我在 irc.freenode.net 上的 #node.js 上。昵称是“ xeodox ”。如果您能帮助我,我将不胜感激!!
我通过对我的 app.js 中的 facebook 模块执行此操作来覆盖 findOrCreateUser:
findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) {
var promise = new Promise()
, self = this;
// TODO Check user in session or request helper first
// e.g., req.user or sess.auth.userId
this.User()().findOne({'fb.id': fbUser.id}, function (err, foundUser) {
if (foundUser)
return promise.fulfill(foundUser);
self.User()().createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) {
return promise.fulfill(createdUser);
});
});
return promise;
}