2012-08-17 76 views
0

我在轨的Omniauth设置,在配置/初始化一个普通omniauth.rb配置文件控制器秘密组合,例如:重写Omniauth键/从轨

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} 

这工作得很好,但我希望能够覆盖与我的应用程序中的控制器不同的密钥/密钥组合。我会如何去做这件事?

我一直在寻找相当一段时间没有成功。希望这足够具体。

回答

0

在您omniauth.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' 

好运

问候。 Ivan。

+0

我很感谢答案,但它似乎并没有在我当前的设置中工作。 'request.env ['omniauth.strategy']'在控制器中没有给我。这是我以前的尝试中遇到的同样的问题!有什么我应该做的配置,使其可用。 – MikeCarter 2012-08-21 08:17:13