3

我正在使用 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 似乎没有执行此步骤。我还发现了类似的问题:无法接收我的 Shopify 应用程序的永久访问令牌,但尚未得到答复。

编辑:删除.myshopify.comhttp = Net::HTTP.new("https://#{params[:shop].to_s.strip}")因为它是一个错字。

编辑 2:
我尝试从给我结果的 HTML 表单发布,但是我无法使用上面的示例或使用 rest-client gem 让它在我的代码中工作。
对于这里发生的事情仍然非常困惑。

4

2 回答 2

1

请参阅您链接到的问题提供的答案。

如果这对您来说不是同一个问题,那么您可以发布正在发送/接收的原始请求和响应数据吗?您正在使用的 api 密钥也会有所帮助。

我建议在命令行上使用 curl 进行尝试,如果这不起作用,您可以为每个步骤发布每个 curl 字符串。

shopify_app 依赖于处理 oauth 身份验证的omniauth 和omniauth-shopify-oauth2 。

于 2012-07-02T00:57:56.037 回答
0

Shopify 确实返回了永久访问令牌,但ACCESS_MODE 必须为“离线”才能使令牌成为永久的。

使用ACCESS_MODE offline,您的应用程序会收到永久访问令牌,以便在您需要时发出请求,而无需用户许可。

文档:

https://shopify.dev/tutorials/authenticate-with-oauth#step-2-ask-for-permission https://shopify.dev/concepts/about-apis/authentication#api-access-modes

于 2021-04-25T18:22:21.197 回答