如何在 Rails OAuth 请求中设置参数?
Posted
技术标签:
【中文标题】如何在 Rails OAuth 请求中设置参数?【英文标题】:How do I set a parameter in a Rails OAuth request? 【发布时间】: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
行中吗?究竟如何?
【问题讨论】:
【参考方案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
中。
【讨论】:
以上是关于如何在 Rails OAuth 请求中设置参数?的主要内容,如果未能解决你的问题,请参考以下文章
流动客户端主题时如何在 C# HttpClient 中设置 OIDC/OAuth 不记名令牌
如何在流动客户端主题时在C#HttpClient中设置OIDC / OAuth承载令牌
如何在 OAuth2 WebFlux 中设置成功和失败处理程序