如何在 Rails OAuth 请求中设置参数?
How do I set a parameter in a Rails OAuth request?
我有一个使用 omniauth-github
gem 的 Rails 应用程序。根据Github documentation,我可以在初始请求中将参数allow_signup
设置为false,这样用户只有在已经有Github帐户的情况下才能登录我的应用程序。这是我想要的行为。
我一直没弄清楚的部分是:我到底应该在哪里设置这个参数?我已将它添加到登录 link 路径 ("auth/github?allow_signup=false"
),但这不起作用。这应该在 config/initializers/omniauth.rb
中的 provider :github
行吗?具体怎么做?
您应该将参数显式传递给 provider
函数。所以请尝试以下代码段。
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], allow_signup: 'true', scope: 'user,repo,gist'
我是这样工作的:
# 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
中。
我有一个使用 omniauth-github
gem 的 Rails 应用程序。根据Github documentation,我可以在初始请求中将参数allow_signup
设置为false,这样用户只有在已经有Github帐户的情况下才能登录我的应用程序。这是我想要的行为。
我一直没弄清楚的部分是:我到底应该在哪里设置这个参数?我已将它添加到登录 link 路径 ("auth/github?allow_signup=false"
),但这不起作用。这应该在 config/initializers/omniauth.rb
中的 provider :github
行吗?具体怎么做?
您应该将参数显式传递给 provider
函数。所以请尝试以下代码段。
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], allow_signup: 'true', scope: 'user,repo,gist'
我是这样工作的:
# 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
中。