omniauthのTwitterプロバイダーのoptionsを動的に変更する
omniauthのTwitterプロバイダーのoptionsを動的に変更する
omniauthでTwitter連携を使う際、consumer_key/secretをアプリ全体で固定せず、リクエストごとに動的に切り替えたいときに使う(マルチテナントでサブドメインごとに別のTwitterアプリキーを持たせるケースなど)。setup: SETUP_PROC を指定すると、認証開始時にomniauthがこのProcを呼び出し、env['omniauth.strategy'].options を書き換えてから実際の認証処理に進む。
SETUP_PROC = lambda do |env|
request = Rack::Request.new(env)
user = User.find_by_subdomain(request.subdomain)
env['omniauth.strategy'].options[:client_id] = user.consumer_key # if using omniauth-oauth2
env['omniauth.strategy'].options[:client_secret] = user.consumer_secret # if using omniauth-oauth2
env['omniauth.strategy'].options[:consumer_key] = user.consumer_key # if using omniauth-oauth
env['omniauth.strategy'].options[:consumer_secret] = user.consumer_secret # if using omniauth-oauth
end
use OmniAuth::Builder.new do
provider :twitter,
setup: SETUP_PROC,
callback_path: "/path/to/callback",
image_size: "original"
end