在OAuth升级后,使用缺少的参数重定向以重定向

时间:2014-01-21 22:15:46

标签: ruby-on-rails oauth shopify

升级到OAuth后,我仍然收到似乎是旧版本的请求,或者至少它们似乎缺少我需要的参数。

从我的应用程序通过安装或登录过程很好。登录Shopify后,他们将被重定向到/ finalize,包含代码,商店,时间戳和签名参数。我在ruby shopify_api gem中使用它来请求一个令牌,我保存它,验证会话并登录。这似乎符合the OAuth guide

但是,如果我首先登录Shopify商店,请转到应用程序,然后单击已安装应用程序的徽标,进入/最终确定商店,签名和时间戳参数。缺少代码参数,我需要它来设置和验证shopify会话。这不是正确的方法吗?

我已经使用Charles Proxy检查了请求,并且没有其他我能看到的神奇请求标头。

我尝试按照OAuth指南的第6步操作,在那里您MD5这些参数获得的签名等于我们注册时保存的令牌,但在这种情况下它们不匹配。

任何帮助都将不胜感激。

FWIW我正在使用shopify_api gem版本3.1.8(最新版本在rubygems.com上),Rails 3.1.12,我的终结代码如下:

def finalize
    shop_domain = params[:shop]

    shopify_session = ShopifyAPI::Session.new shop_domain
    token = shopify_session.request_token(params[:code])

    # Reinitialize the shopify_session with the token
    shopify_session = ShopifyAPI::Session.new(shop_domain, token)
    ShopifyAPI::Base.activate_session(shopify_session)

    if shopify_session.valid?

      # Store their shopify creds so we can log in while they're offline
      shop = Shop.find_or_create_by_domain(shop_domain)
      shop.api_password = token

      # Do some more log in stuff and save the shop...

    else
      flash[:error] = "Could not log in to Shopify store."
      redirect_to 'login#index'
    end
end

请注意这是a repost of a topic on the Shopify forum,因为我没有在那里得到答复。

在我从Shopify收到错误请求的同时,我要求用户再次从我的网站登录,这似乎有效。

1 个答案:

答案 0 :(得分:0)

首次安装和返回登录时,您应使用相同的OAuth流程。请查看Rails App Shopify提供的内容,它使用相同的OAuth流程进行安装和登录。由于您的范围未更改,Shopify将不会显示授权页面并自动重定向到返回URL。

请查看generate routesSessionsController作为示例。