无法使用 Faraday gem 与 Salesforce 的其余 API 建立连接

Not able to make connection with rest API of Salesforce using Faraday gem

为什么我们在尝试使用 ROR 通过 Faraday gem 与 Salesforce rest API 建立连接时出现此错误?

Faraday::Error::ConnectionFailed:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Faraday 需要有效的根证书才能建立连接。

如果您使用的是 Windows 机器,请按照以下说明安装证书:https://gist.github.com/867550

对于 Mac,执行以下操作:

sudo port install curl-ca-bundle

接下来,在您的法拉第请求中,将此行包含在您实际发送请求的正上方(例如 https.request_get('/foo')):

https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'

这将告诉 Faraday 用来在其请求中包含证书的 http 对象。如果您的系统出现错误,您可能需要根据文件在系统中的位置调整包含。

总而言之,您的请求将如下所示:

require 'net/https'
https = Net::HTTP.new('encrypted.google.com', 443)
https.use_ssl = true
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' if File.exists('/opt/local/share/curl/curl-ca-bundle.crt') # Mac OS X
https.request_get('/foo')