我正在使用rails开发shopify应用程序,我正在关注这两个OAuth2身份验证的链接:http://api.shopify.com/authentication.html
& https://github.com/Shopify/shopify_api
。
我已经陷入了我要求永久访问令牌的步骤。我发布了client_id,client_secret&验证文档中指定的代码参数https://SHOP_NAME.myshopify.com/admin/oauth/access_token
但是我没有收到访问令牌。我得到的回应是状态200,其中有一个空体和标题。
代码:
http = Net::HTTP.new("https://#{params[:shop].to_s.strip}")
request = Net::HTTP::Post.new("/admin/oauth/access_token")
request.set_form_data({
"client_id" => ShopifyApp.configuration.api_key,
"client_secret" => ShopifyApp.configuration.secret,
"code" => params[:code].to_s.strip
})
response = http.request(request)
响应:
@body=[],
@header={},
@status=200,
让我更加困惑的是(我可能在这里错了,但是)shopify_app似乎没有采取这一步骤。 我也发现了类似的问题:Unable to receive a permanent access token for my Shopify App但尚未得到回答。
修改:从.myshopify.com
删除http = Net::HTTP.new("https://#{params[:shop].to_s.strip}")
,因为这是一个错字。
编辑2:
我试过从HTML表单发布给我结果,但是我无法使用上面的例子或者rest-client gem在我的代码中使用它。
关于这里发生的事情仍然非常困惑。
答案 0 :(得分:1)
请参阅question you linked to上提供的答案。
如果您的问题不同,那么您可以发布正在发送/接收的原始请求和响应数据吗?你正在使用的api密钥也会有所帮助。
我建议在命令行中使用curl进行尝试,如果这不起作用,您可以为每个步骤发布每个卷曲字符串。
shopify_app依赖于omniauth和处理oauth身份验证的omniauth-shopify-oauth2。
答案 1 :(得分:0)
Shopify 确实会返回永久访问令牌,但 ACCESS_MODE 必须为“离线”,令牌才能永久有效。
使用 ACCESS_MODE 离线,您的应用会收到永久访问令牌,以便您随时发出请求,无需用户许可。
文档:
<块引用>https://shopify.dev/tutorials/authenticate-with-oauth#step-2-ask-for-permission https://shopify.dev/concepts/about-apis/authentication#api-access-modes