尝试创建Shopify access\u令牌时出错

尝试创建Shopify access\u令牌时出错,shopify,access-token,Shopify,Access Token,我正在尝试在Shopify商店上安装我们的公共应用程序,重定向URL中返回的code用于生成访问令牌。 但我们调用Shopify API生成访问令牌时,总是会导致以下错误: “oauth错误无效请求未找到或已使用授权码” 随后的程序: 一旦Shopify show onwer点击接受我们应用程序的安装,他就会被重定向到以下URL: http://mywebsite.com/?code=d119551fb7cdd820012c6b2cb7b12495&hmac=10976937c09a1f

我正在尝试在Shopify商店上安装我们的公共应用程序,重定向URL中返回的
code
用于生成访问令牌。 但我们调用Shopify API生成访问令牌时,总是会导致以下错误:

“oauth错误无效请求未找到或已使用授权码”

随后的程序: 一旦Shopify show onwer点击接受我们应用程序的安装,他就会被重定向到以下URL:

http://mywebsite.com/?code=d119551fb7cdd820012c6b2cb7b12495&hmac=10976937c09a1f1e3db6275d12cae8fbd43415a6d5b031ec14a70128b8fe9dfe&shop=<retailer>.myshopify.com&state=11122777&timestamp=1478065253
http://mywebsite.com/?code=d119551fb7cdd820012c6b2cb7b12495&hmac=10976937c09a1f1e3db6275d12cae8fbd43415a6d5b031ec14a70128b8fe9dfe&shop=.myshopify.com&state=11122777×tamp=1478065253
mywebiste.com是我们的网站,它与Shopify商店集成,并通过访问令牌访问各种API。myshopify.com是真正的Shopify商店

Shopify店主通过电子邮件向我们提供了此重定向URL

此URL包含
code
参数。我们使用此
code
参数并点击另一个Shopify API生成访问令牌-使用以下URL:
https://.myshopify.com/admin/oauth/access_token
并传递以下3个POST参数:客户端id、客户端密码和密码

我们还没有编写创建访问令牌的程序,而是通过POSTMAN生成访问令牌的过程,这是一个手动过程。我们正计划编写脚本,它将自动解析重定向的URL并生成访问令牌,但到目前为止,我们正在手动执行此操作

让我知道你需要的任何其他细节,我会提供它。 我在Shopify论坛上创建了一个类似的请求,但他们也建议将这个问题放到StackOverflow上,让专家们看看

谢谢! 沙拉德

Shopify店主通过电子邮件向我们提供了此重定向URL


听起来像是Shopify提供给你的
code
Shopify即将到期,而你正在等待店主与你分享它。我建议您创建一个开发商店,以便您能够在Shopify返回代码后立即访问该代码。您可以找到有关创建开发存储的说明。

为什么在电子邮件中提供重定向URL

授权码的使用期限有限,只能使用一次。授权码应在发出后立即交换为访问令牌

我建议再次阅读OAuth文档,因为您当前的流程似乎与文档中描述的不一致


我们决定与我们的客户合作,发现我们的客户在安装应用程序后被重定向到我们的服务器时,正在单击浏览器上的“后退”按钮。 此操作将我们的客户带回他们的管理页面,并实际呈现所生成的代码。 因此,实际上,在我们可以用来生成访问令牌之前,代码就已经被使用了

我们阻止用户单击浏览器上的“后退”按钮,并首先使用生成的代码生成访问令牌,它成功了。 谢谢你,杰米,谢谢你对“代码有一个生命周期,只能使用一次”的投入,这让我开始思考

问候,,
Sharad

您试图用哪种语言实现此功能?你有什么限制吗?谢谢你的回复。电子邮件在两分钟内迅速传来。我与客户进行了通话,他说他已经发送了邮件,我们在2分钟内收到了邮件。不过我不确定,这么短的时间跨度是否真的会让代码过期。谢谢你的回复。我不确定你指的是我没有做的步骤。我们唯一没有做的事情是,我们没有点击ShopifAPI以自动方式生成访问令牌——没有编写脚本以检查签名等。但我们正在点击上面链接中提到的API,以通过postman生成访问令牌。不知道为什么RESTAPI调用在邮递员中不起作用,但是当我们编写一个php脚本来处理重定向url、提取代码,然后执行nonce、hmac和主机名验证时会起作用