OmniAuth-mixiとjpmobileを組み合わせてガラケー対応する方法
RubyのWebアプリでmixiの認証機能を手軽に組み込める「 OmniAuth-mixi」ですが、標準の機能でもdisplayクエリパラメータを指定することで、スマフォ対応することが可能です。
redirect '/auth/mixi?display=touch'
でも、ガラケー端末向けには、ちょっと工夫が必要になります。これは、mixiのOAuth2対応では、PC&スマフォの認可画面と、ガラケー向けの認可画面とで、URLが異なるという事情から来ています。例えばjpmobileを使っている場合であれば、jpmobileの機能を使ってガラケーからのリクエストかどうかを判断して、認可画面の飛び先を変えるというテクニックを使うことで対応できます。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :mixi, ENV['CLIENT_ID'], ENV['CLIENT_SECRET'],
:setup => lambda {|env|
request = Rack::Request.new(env)
env['omniauth.strategy'].options[:client_options][:authorize_url] =
'http://m.mixi.jp/connect_authorize.pl' if request.mobile?
}
end
もしjpmobileを使ってガラケーにも対応したいとお考えの方は、ぜひ上記を試してください。