2

現在、mongoose-auth の Facebook Connect を使用しています。すべてが正常に機能し、mongodb サーバーを介してユーザーが作成/ログインされています。

ただし、サインアップ時に新しいユーザーごとにランダムな「コード」を割り当て、それを db.users プロファイル内に配置したいため、findOrCreateUsers をオーバーライドしたいと考えています。

そこで を調べて、mongoose-auth/lib/facebookこれら 3 つの facebook モジュール ファイルを自分のディレクトリ [everyauth.js、index.js、schema.js] にコピーしました。簡単なテストを実行するために、基本的に自分のディレクトリから独自の everyauth.js を含め、デフォルトの代わりにその findOrCreateUsers メソッドを使用しました。

動作しますが、エラーが 1 つあります。ログイン/ユーザー作成後req.userは未定義です。( req.loggedInTrue, yay! を示します)

これが新しいライブラリであることは承知していますが、使用したことがある (または Node.js についてよく知っている) 場合は、助けていただければ幸いです。私は irc.freenode.net の #node.js を使用しています。愛称は「ゼオドックス」。あなたが私を助けることができれば、私は本当に感謝します!!

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

1 に答える 1

3

これらのファイルを自分のディレクトリにコピーする必要はありません。mongoose-auth 設定で次のことを行うだけです。

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

undefined に関するヘルプが必要な場合は、問題を再現するための自己完結型の要点へのリンクを添えて github に問題req.userを提出してください。

于 2011-06-01T07:59:44.517 に答える