2013-06-23 107 views
2

我想覆盖在omniauth宝石中设置的默认范围。我已经尝试通过初始化设置范围,并尝试将范围留空。我希望能够做在omniauth宝石中覆盖默认范围设置

/auth/<provider>?scope=<scope> 

为纽带,在签署

然而,不管如何我设置在商

config/initializers/omniauth.rb 

前:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :<provider>, <app_uid>, <app_secret>, 
    :scope => "", 
    :client_options => { 
    :site   => "https://api.<provider_url>", 
    :authorize_url => "https://api.<provider_url>/oauth/authorize", 
    :token_url  => "https://api.<provider_url>/oauth/token" 
    } 
end 

它仍然尝试使用

012中的默认范围设置发送omniauth/oauth-2请求
omniauth-<provider> gem 

如何通过传递给传递给提供者的url的作用域参数来覆盖在gem中声明的默认作用域?

回答

2

我能够这样做使用以下初始化程序。

Rails.application.config.middleware.use OmniAuth::Builder do 
    :<provider>, <app_uid>, <app_secret>, 
    :setup => lambda { |env| env["omniauth.strategy"].options[:scope] = env["rack.session"]["omniauth.params"]["scope"]}, 
    :client_options => { 
    :site   => "https://api.<provider_url>", 
    :authorize_url => "https://api.<provider_url>/oauth/authorize", 
    :token_url  => "https://api.<provider_url>/oauth/token" 
    } 

end 
+0

工作就像一个魅力。做得好。 –