2

我正在尝试覆盖在omniauth gem 中设置的默认范围。我尝试通过初始化程序设置范围以及尝试将范围留空。我希望能够做到

/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

它仍然尝试使用默认范围设置发送omniauth / oauth-2请求

omniauth-<provider> gem

如何通过将范围参数传递给传递给提供者的 url 来覆盖 gem 中声明的默认范围?

4

1 回答 1

3

我可以使用以下初始化程序来做到这一点。

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
于 2013-06-24T19:04:53.060 回答