升级到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收到错误请求的同时,我要求用户再次从我的网站登录,这似乎有效。
答案 0 :(得分:0)
首次安装和返回登录时,您应使用相同的OAuth流程。请查看Rails App Shopify提供的内容,它使用相同的OAuth流程进行安装和登录。由于您的范围未更改,Shopify将不会显示授权页面并自动重定向到返回URL。
请查看generate routes和SessionsController作为示例。