我们正在尝试在 http 代理后面的 Rails 应用程序中使用linkedin-omniauth gem。
我已经尝试了所有可以找到的方法来让omniauth 使用代理,但我无法让它工作。
以下帖子建议使用:
provider :linkedin, 'xxx', 'xxx', {
:client_options => {
:proxy => ENV["HTTP_PROXY"] || ENV["http_proxy"]
}
}
这对我不起作用,我在源代码中没有提到“代理”。我也尝试过对代理进行硬编码。没有成功。
我还使用代理为 net::http 创建了一个初始化程序。那也行不通。我已经在我的 shell 和 bashrc 中导出了代理。在 /etc/environment 中。没有任何工作。
如何让omniauth 使用出站代理?
- - 更新 - -
虽然下面接受的答案确实适用于 Linkedin Oauth,但大多数宝石现在都依赖于 Oauth2。这取消了 Net::HTTP 并引入了 Faraday,它对代理/连接设置有单独的规则集:
https://github.com/simonmorley/oauth2/blob/master/lib/oauth2/client.rb#L36
为了让代理与后来的 gem 一起工作(包括流行的 Facebook、Google、Github 检查他们依赖的 gem),您需要在初始化程序中使用以下内容:
provider :foursquare, 'xxx', 'xxx', {
:client_options => {
:connection_opts => {
:proxy => "http://127.0.0.1:3128"
}
}
}