我正在按照 Shopify 说明获取特定应用/商店组合的永久令牌 ( http://api.shopify.com/authentication.html )。
我能够获取临时令牌,然后使用简单的 html 表单来接收永久令牌:
但我得到的响应是:{"error":"invalid_request"}
你能帮我吗?我到处搜索(Stackoverflow、Shopify 支持论坛等),但找不到如何解决这个问题的线索。我的应用程序在线并托管在 Heroku 上。
谢谢,
我正在按照 Shopify 说明获取特定应用/商店组合的永久令牌 ( http://api.shopify.com/authentication.html )。
我能够获取临时令牌,然后使用简单的 html 表单来接收永久令牌:
但我得到的响应是:{"error":"invalid_request"}
你能帮我吗?我到处搜索(Stackoverflow、Shopify 支持论坛等),但找不到如何解决这个问题的线索。我的应用程序在线并托管在 Heroku 上。
谢谢,
我想我们有相似的想法!我遇到了和你完全相同的问题。我想我们都被文档弄糊涂了!
我使用shopify_app
gem 生成了我的应用程序。这在中创建了以下方法login_controller.rb
:
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
session[:shopify] = sess
flash[:notice] = "Logged in"
redirect_to return_address
session[:return_to] = nil
else
flash[:error] = "Could not log in to Shopify store."
redirect_to :action => 'index'
end
end
( ShopifyAPI::Session.new
) 的第 3 行正在为我们执行 Shopify 身份验证的第 2 步。它正在为我们获取永久访问令牌。
该变量sess
现在将包含两件事:
url
)token
)正如 John Duff 所说——我们已经有了访问令牌!我们不需要 POST到https://SHOP_NAME.myshopify.com/admin/oauth/access_token
. shopify_app
它在gem生成的代码中为我们处理。
在我的 finalize 方法中,我添加了一行:
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
Shop.find_or_create_by_myshopify_domain(sess.url, access_token: sess.token)
...
这将创建一个商店并为其分配访问令牌。My Shop 模型具有属性myshopify_domain
和access_token
.
将来,如果我想为该商店使用 ShopifyAPI,我可以按照shopify_api gem 主页上的说明进行操作
我花了几个小时试图弄清楚这个。我不确定文档如何更清晰。希望如果问题再次出现,人们会找到这个 StackOverflow 页面!
我希望这对你有帮助。
干杯,尼克
一旦代码过期使用,您需要存储令牌或请求新代码。在日志中,您的一个请求成功,然后您继续使用相同的代码发出访问令牌请求,但由于代码已过期而失败。
尝试再次请求权限并使用您收到的新代码进行访问令牌调用。确保存储访问令牌,因为该代码无法再次使用。