Express.js + everyauthで認証する方法のメモ
読了まで:約4分
概要: Express.js で
こんに
なんか
六月のは
- [[いろいろ
あって うつ病に なったりしたけどようやく 復活してきました /post/50791597902]]
とか
ただ、
んで、
CoffeeScript
+Express.js
+everyauth
を
今回使用したライブラリの説明
Express.js node.js での
Web Application framework 最近
3.x 系が 出た 今回は
3.x 系を 使用 everyauth node.js の
connect.js 向け認証モジュール 対応サイトが
多い。 代表格は Twitter、 Facebook、 Instagram、 mixi とかも 対応 express.js 3.x 系で
使うには git branch から everyauth を インスコする 必要あり CoffeeScript JavaScript 書くの
めんど いから 使用 ちょさんにはでぃすられる
個人的には
なれると 結構らく ちんです
Express.js
+ everyauth
のハマりどころ
1. コードを書く順番
Express.js
とeverauth
をeveryauth
の
どうeveryauth
everyauth = require 'everyauth'
config = require 'config'
everyauth.twitter.configure
consumerKey: config.auth.twitter.consumer
consumerSecret: config.auth.twitter.secret
entryPath: '/login/twitter'
redirectPath: '/login/twitter/callback'
findOrCreateUser: ( session, token, secret, data ) ->
promise = @Promise()
promise.fulfill( id: "twitter:#{data.id}" )
return promise
と
app.configure ->
# (略)
app.use express.cookieParser( config.cookie.secret )
app.use everyauth.middleware(app) # <- コレ
# (略)
をentryPath
localhost:3000/login/twitter
にCannot get /login/twitter
な
なんで、everyauth
express.js
にeveryauth
の
2. everyauth.everymodule.findUserById
とfindOrCreateUser
の組み合わせ方
この
で、
everyauth.everymodule.findUserById
データベースからユーザー情報を 引っ張ってくる ここで
渡した Object が view helper の user オブジェクトに 入る findOrCreateUser
ユーザー ID を見つけるか作る ここで
UserID を データストアに 保存しても 良いけど、 しなくても OK
重要なのは、User ID を所定の方法で返す事
と
具体的には、
everyauth.twitter.configure
(略)
findOrCreateUser: ( session, token, secret, data ) ->
promise = @Promise()
promise.fulfill({ id: "twitter:#{data.id}" }) # <- ココでUserIDを渡す
return promise
とpromise.fulfill
にid
プロパティのeveryauth.everymodule.findByID
の、
everyauth.everymodule.findUserById ( userId, callback ) ->
console.log(userId) # <- ココがさっきの`twitter:#{data.id}`になる
(略)
userId
の
この
というわけで以上ハマりどころでした。
Express.js
とeverauth
の
ちなみに
ま
ちなみに
多分
と
#FIXME