【问题标题】:How do I set a parameter in a Rails OAuth request?如何在 Rails OAuth 请求中设置参数?
【发布时间】:2019-07-19 02:23:50
【问题描述】:

我有一个使用 omniauth-github gem 的 Rails 应用程序。根据Github documentation,我可以在初始请求中将参数allow_signup设置为false,这样用户只有在已经有Github账号的情况下才能登录我的应用。这是我想要的行为。

我无法弄清楚的部分是:我应该在哪里设置这个参数?我已将其添加到登录链接路径 ("auth/github?allow_signup=false"),但这不起作用。这应该在config/initializers/omniauth.rb 内的provider :github 行中吗?究竟如何?

【问题讨论】:

    标签: ruby-on-rails github omniauth


    【解决方案1】:

    您应该将参数显式传递给provider 函数。所以请尝试以下sn-p。

    provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], allow_signup: 'true', scope: 'user,repo,gist'
    

    【讨论】:

    • 谢谢,但这似乎不起作用。我得到了它的工作,我将如何作为一个单独的答案发布。
    【解决方案2】:

    这就是我让它工作的方式:

    # config/initializers/omniauth.rb
    
    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :github,
        ENV['GITHUB_KEY'],
        ENV['GITHUB_SECRET'],
        {
          client_options: {
            authorize_url: 'https://github.com/login/oauth/authorize?allow_signup=false'
          }
        }
    end
    

    显然它也适用于 Devise,将 provider 替换为 config.omniauth 并将其放在 config/initializers/devise.rb 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      相关资源
      最近更新 更多