認証といえば devise がよく使われていますが、富豪的なのでもう少しsimpleだという sorcery を使ってみました。
ちょろっと触った感じでは、お手軽で良いです。そのうちソースも読んでみます。
認証実装
Simple Password Authentication · NoamB/sorcery Wiki
に従えば、ほぼほぼokです。
keyはdefault emailなのですが、今回emailをoptionalにしてnameをkeyにするという方針にしたかったので、以下を修正。
# config/initializers/sorcery.rb user.username_attribute_names = [:name]
OAuth実装
OAuthもfacebook、twitter、linkedin、xing、google、liveid、salesforceといろいろ対応しているようです。
External · NoamB/sorcery Wiki
こちらもwikiに記載があるので、ほぼこの通りに実装すればok。
attr_accessible など過去の記述方法になっているところは無視するのと
secret keyなどは secrets.ymlに記載するようにしました。(gitの管理対象外にしてgitignoreにするのを忘れずに!)
# config/secrets.yml development: twitter_key: twitter_key twitter_secret: twitter_secret # config/initializers/sorcery.rb config.external_providers = [:twitter] config.twitter.key = Rails.application.secrets.twitter_key config.twitter.secret = Rails.application.secrets.twitter_secret config.twitter.callback_url = 'http://0.0.0.0:3000/oauth/callback?provider=twitter' config.twitter.user_info_mapping = { name: 'screen_name' }