我正在尝试使用RoR创建一个应用程序,以便我可以测试ShopifyAPI。 我正在使用我通过合作伙伴管理门户创建的私人应用程序。
我尝试使用生成的密码创建会话。会议似乎是有效的。
login_controller:
def index
debugger
sess = ShopifyAPI::Session.new('a75999989b7715f73ae5273497b9bfcb:9eb9f578d9fcfd753713e079@mante-hudson7934.myshopify.com', '9eb9f578d9fcfd753713e0795')
sess.valid?
session[:shopify] = sess
flash[:notice] = "Logged in"
redirect_to return_address
session[:return_to] = nil
end
但是当我试图获得所有产品时(产品= ShopifyAPI :: Product.find(:all,:params => {:limit => 10})
我最终得到500错误。
这是我的调试跟踪:
1: ShopifyAPI::Base.site = https://a75999989b7715f73ae5273497b9bfcb:9eb9f578d9fcfd753713e079596d4fbd@mante-hudson7934.myshopify.com/admin/
~/.rvm/gems/ruby-1.9.3-p194@rails328/gems/shopify_app-4.0.0/lib/shopify_app/login_protection.rb:9
ShopifyAPI::Base.clear_session
在浏览器中我有一个例外: “通过对等方重置连接 - SSL_connect”
显然我的会话存在问题......
我有什么遗失的吗?
谢谢
- 编辑 -
实际上我尝试通过IRB抓取产品并最终得到相同的500错误: “通过对等方重置连接 - SSL_connect”
不确定我为什么会出现此错误?
吉斯
答案 0 :(得分:2)
最有可能的是,您的客户端正在尝试使用TLS 1.2进行连接,这是HTTPS中使用的最新SSL / TLS协议之一。我们的负载平衡硬件在TLS 1.2中存在已知问题,尽管我自己也没有意识到这一点,直到我自己独立地发现了这个错误。
我让其余的运营团队意识到这一点,我希望我们能尽快解决这个问题。在此之前,您可以使用
http.ssl_version = :TLSv1
强制Ruby使用TLS 1.0。 (有些客户可能需要使用:SSLv3
。)
以下是如何将此变通方法应用于ActiveResource的示例,ActiveResource是shopify_api
gem在内部使用的gem:
require 'active_resource/connection'
class ActiveResource::Connection
def apply_ssl_options_with_ssl_version(http)
apply_ssl_options_without_ssl_version(http)
http.ssl_version = @ssl_options[:ssl_version] if @ssl_options && @ssl_options[:ssl_version]
http
end
alias_method_chain :apply_ssl_options, :ssl_version
end
现在你可以使用
ShopifyAPI::Base.ssl_options = {:ssl_version => :TLSv1}
(或必要时:SSLv3
)解决问题。
答案 1 :(得分:1)
我确实在ubuntu environement下。我只是尝试在Windows下,它似乎至少在IRB控制台中工作。正如您提到的,我可能遇到Ubuntu和OpenSSL的问题。 我将研究这个领导。谢谢
------- ------- EDIT 我尝试连接到mac OS X Lion下的API,但得到了同样的错误。 有没有人很难连接到Shopify API? 如果它与openssl有关,有没有办法解决这个问题呢?
谢谢