2011-04-28 35 views
2

現在我正在使用mongoose-auth的Facebook Connect。一切工作正常,用戶正在通過我的mongodb服務器創建/登錄。有沒有人用過Mongoose-auth?你如何搭配findOrCreateUsers?

但是,我想重載findOrCreateUsers,因爲我想在註冊時爲每個新用戶分配一個隨機「代碼」,並將其放入它們的db.users配置文件中。

所以我看着mongoose-auth/lib/facebook,我將這3個facebook模塊文件複製到我自己的目錄[everyauth.js,index.js,schema.js]。爲了運行一個簡單的測試,我基本上包含了自己的目錄中的everyauth.js,並且使用它的findOrCreateUsers方法而不是默認的方法。

它的工作原理,但有一個錯誤。登錄/創建用戶後,req.user未定義。 (req.loggedIn顯示真的,耶!)

我知道這是一個新的圖書館,但如果你已經使用它(或瞭解了很多關於Node.js),我真的很感激,如果你能幫助我。我在irc.freenode.net上的#node.js上。暱稱是「xeodox」。如果你能幫助我,我會非常感激!

我推翻findOrCreateUser在我app.js這樣對facebook的模塊:

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; 
    } 

回答

3

沒有必要將這些文件複製到自己的目錄。只是不要在你的貓鼬驗證配置如下:

facebook: { 
    everyauth: { 
     myHostname: 'http://localhost:3000' 
    , appId: 'YOUR APP ID HERE' 
    , appSecret: 'YOUR APP SECRET HERE' 
    , redirectPath: '/home' 
    , findOrCreateUser: function (session, accessToken, fbUserMetadata) { 
     } 
    } 
} 

有關未定義req.user幫助,在GitHub上提交一份issue一個鏈接到一個自包含gist重新創建的問題,我可以幫你出去。