OmniAuthを使ってTwitterやFacebookと連携・認証をする方法はググればたくさん出てくるのですが、mixi OpenIDを使ったやり方は出てこなかったので調べてみました。
OmniAuthの設定
config/initializers/omniauth.rbに以下を記述して保存します。OpenID.fetcher.ca_fileを指定しないと Warning が出まくるのでしっかり指定してあげましょう。
require 'omniauth/openid'
require 'openid/fetchers'
require 'openid/store/filesystem'
OpenID.fetcher.ca_file = "/usr/lib/ssl/certs/ca-certificates.crt"
Rails.application.config.middleware.use OmniAuth::Builder do
provider :openid, OpenID::Store::Filesystem.new("/tmp"), :name => "mixi", :identifier => "mixi.jp"
end
providerにTwitterやFacebookを追加すれば、3サイトで認証出来るようになります。
参考サイト
UserモデルやSessionsControllerの実装などは、@jugyoさんの OmniAuth で簡単 Twitter 認証!の通りにやれば完璧だと思います。