Shopify - 为私人应用创建会话

时间:2012-08-31 21:17:27

标签: shopify

我正在尝试使用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”

不确定我为什么会出现此错误?

吉斯

2 个答案:

答案 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有关,有没有办法解决这个问题呢?

谢谢

相关问题