1

我正在尝试使用 RoR 创建一个应用程序,以便我可以测试 ShopifyAPI。我正在使用通过合作伙伴管理门户创建的私有应用程序。

我尝试使用生成的密码创建会话。会话似乎是有效的。

登录控制器:

    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

但是当我尝试获取所有产品时(products = 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”

不知道为什么我有这个错误?

里吉斯

4

2 回答 2

2

很可能,您的客户端正在尝试使用 TLS 1.2 进行连接,这是 HTTPS 中使用的最新 SSL/TLS 协议之一。我们的负载平衡硬件在 TLS 1.2 中存在一个已知问题,尽管直到我自己独立偶然发现了这个错误,我们才意识到这一点。

我已经让运营团队的其他成员意识到了这一点,我希望我们会尽快解决这个问题。在此之前,您可以使用

http.ssl_version = :TLSv1

强制 Ruby 改为使用 TLS 1.0。(有些客户可能需要使用:SSLv3改用。)

下面是一个如何将此解决方法应用于 ActiveResource 的示例,它是shopify_apigem 内部使用的 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如果有必要)来解决这个问题。

于 2012-10-31T18:14:43.533 回答
1

I am indeed under ubuntu environement. I just tried under windows and it seems to work at least in IRB console. As You mentionned I may have a problem with Ubuntu and OpenSSL. I will investigate this lead. Thank you

-------EDIT------- I tried connecting to the API under mac OS X Lion but got the same error. Does anybody is having hard time to connect to the Shopify API? If it's related to openssl is there a way to goet around this?

Thank you

于 2012-09-02T17:07:29.613 回答