0

レールに Omniauth セットアップがあり、config/initializers に通常の omniauth.rb 構成ファイルがあります。たとえば、次のようになります。

    provider :twitter, :setup => lambda { |env|
      twitter_key = keychain.key "twitter"
      twitter_secret = keychain.secret "twitter"

      Rails.application.config.twitter_key = twitter_key
      Rails.application.config.twitter_secret = twitter_secret
      env['omniauth.strategy'].options[:consumer_key] = twitter_key
      env['omniauth.strategy'].options[:consumer_secret] = twitter_secret}

これは正常に機能しますが、このキー/シークレットの組み合わせを、アプリケーションのコントローラーからの別の組み合わせでオーバーライドできるようにしたいと考えています。どうすればこれを行うことができますか?

私は成功せずにかなりの時間を探してきました。うまくいけば、これは十分に具体的です。

4

1 に答える 1

0

omn​​iauth.rb で、次のようにします。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter,:setup => true
end

次に、コントローラーで次を定義する必要があります。

def setup
 request.env['omniauth.strategy'].options[:consumer_key] = @site.twitter_key
 request.env['omniauth.strategy'].options[:consumer_secret] = @site.twitter_secret
 render :text => "Setup complete.", :status => 404
end

もちろん、関連するルートを routes.rb に追加する必要があります。

  #Twitter Omniauth routes
  match '/auth/twitter/callback' => 'session#authorize_callback'
  match '/auth/twitter/setup' => 'session#setup'

幸運を

よろしく。イワン。

于 2012-08-17T15:05:19.070 に答える