【发布时间】:2014-01-21 22:15:45
【问题描述】:
升级到 OAuth 后,我仍然收到似乎是旧式身份验证样式的请求,或者至少它们似乎缺少我需要的参数。
通过安装或登录过程从我的应用程序开始是可以的。登录到 Shopify 后,他们将使用代码、商店、时间戳和签名参数重定向到 /finalize。我将它与 ruby shopify_api gem 一起使用来请求一个令牌,我保存、验证会话并登录它们。这似乎符合the OAuth guide。
但是,如果我先登录 Shopify 商店,转到应用程序,然后单击已安装应用程序的徽标,它会转到带有商店、签名和时间戳参数的 /finalize。缺少代码参数,我需要它来设置和验证 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 的错误请求时,我要求用户重新从我的网站重新登录,这似乎有效。
【问题讨论】:
标签: ruby-on-rails oauth shopify