express
にeveryauth
を使用して、画像にテキストコメントを追加できるウェブサイトへのユーザーを認証しようとしています。私は現在、ユーザーを認証するためにtwitter oauth apiを使用しています。findauthとfindUserById内から(ツイッター)oauthデータにアクセスする
私はCouchDB内の1つのエントリに複数のログイン方法を保持できるカスタムユーザデータベースを確立しようとしています。 Twitterに初めて接続したときにDBに新しいユーザーを追加したいときに問題に遭遇しています。私findUserById
のコードは、次のように読み取ります
everyauth.everymodule.findUserById (userId, callback) ->
users.findById userId, (err,res) ->
if res.id
# id returned, so there is an entry in the DB
callback null, res
else
# no entry in the DB, add a new one
users.saveById JSON.stringify(userId), {"name":"test"}, (saveErr, saveRes) ->
callback null, saveRes
everyauth.twitter
.consumerKey(config.twitterConsumerKey)
.consumerSecret(config.twitterConsumerSecret)
.findOrCreateUser((session, token, secret, user) ->
promise = @.Promise().fulfill user
).redirectPath '/'
findById
とsaveById
は、DBを照会cradle
オブジェクトのメソッドですそれはそうと、userId
は、everyauthによって提供されます。
私の問題は{"name":"test"}
部分にあります。これは、req.session.auth.twitter
オブジェクトのデータをDBに追加する場所です。 findUserById
機能内からこれらの値にアクセスするにはどうすればよいですか?
これは可能ですか?別の方法がありますか?私はfindOrCreateUser関数を見ていますが、私は自分のアプリをクラッシュせずにそれをどのように変更するのか分かりません。私はまだPromiseの概念を理解していません。
は、詳細な説明をありがとうございました。私は確かにPromiseの部分と私が読んだところから混乱していましたが、その種のパラダイムはノードによって残されました。しかし、パスポートは非常に有望に見える、私は私の次の大きなプロジェクトでそれを使用します:) – arvidkahl