Shopify OAuth身份验证不会返回永久访问令牌

时间:2012-07-01 22:59:55

标签: oauth access-token shopify

我正在使用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在我的代码中使用它。 关于这里发生的事情仍然非常困惑。

2 个答案:

答案 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