Oauth 无法接收我的Shopify应用程序的永久访问令牌

Oauth 无法接收我的Shopify应用程序的永久访问令牌,oauth,access-token,shopify,Oauth,Access Token,Shopify,我正在按照Shopify的说明为特定的应用程序/商店组合()获取永久令牌 我可以获取临时令牌,然后使用简单的html表单接收永久令牌: 但是我得到的响应是:{“error”:“invalid_request”} 你能帮帮我吗? 我到处搜索(Stackoverflow、Shopify支持论坛等),但找不到解决这个问题的线索。 我的应用程序是在线的,托管在Heroku上 谢谢 一旦代码过期使用,您需要存储令牌或请求新代码。在日志中,您的一个请求成功,然后您继续使用由于代码过期而失败的相同代码进行访

我正在按照Shopify的说明为特定的应用程序/商店组合()获取永久令牌

我可以获取临时令牌,然后使用简单的html表单接收永久令牌:

但是我得到的响应是:{“error”:“invalid_request”}

你能帮帮我吗? 我到处搜索(Stackoverflow、Shopify支持论坛等),但找不到解决这个问题的线索。 我的应用程序是在线的,托管在Heroku上

谢谢


一旦代码过期使用,您需要存储令牌或请求新代码。在日志中,您的一个请求成功,然后您继续使用由于代码过期而失败的相同代码进行访问令牌请求


请尝试再次请求权限,并使用收到的新代码进行访问令牌调用。请确保存储访问令牌,因为代码无法再次使用。

我认为我们有类似的想法!我和你遇到了完全相同的问题。我想我们都被文件弄糊涂了

我使用
shopify\u应用程序
gem生成了我的应用程序。这在
login\u 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
第3行(
shopifigapi::Session.new
)是为我们做的。它给我们带来了一个永久访问令牌

变量
sess
现在将包含两个内容:

  • 商店的*.myshopify.com域(
    url
  • 保存以备将来使用的永久访问令牌
    令牌
  • 正如约翰·达夫所说,我们已经有了一个访问令牌我们不需要将发布到
    https://SHOP_NAME.myshopify.com/admin/oauth/access_token
    。它在
    shopify\u应用程序生成的代码中为我们处理

    在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\u domain
    access\u token

    将来,如果我想为该商店使用ShopifyAPI,我可以按照

    我花了好几个小时想把这件事弄清楚。我不确定文档如何更清晰。希望如果这个问题再次出现,人们会发现这个StackOverflow页面

    我希望这对你有帮助

    干杯,
    尼克

    你能发布原始请求和响应吗?您正在使用的API密钥也会有所帮助。我添加了一些显示我得到的完整响应的图像。还有API密钥(客户端id)。谢谢你的关注!谢谢约翰,你说得对,但我从未成功地收到有效的访问代码。我尝试使用3个不同的令牌,但即使令牌是新的,并且在得到相同的答复之前从未使用过:{“error”:“invalid_request”}:(这不是我从请求日志中看到的,我认为您使用的任何库都可能有问题。您从命令行使用cURL进行过尝试吗?谢谢John,我尝试请求一个新代码,然后再次尝试使用cURL命令行命令接收一个新的访问代码:cURL-d“客户id=xxx&客户机密=xxx&代码=xxx"我看到的是7月3日UTC 5:19时,一个带有grant_类型和redirect_uri参数的访问令牌请求通过,用户代理Ruby成功。然后,我看到许多访问令牌请求使用了已经使用过的相同代码,包括cURL请求。无论您最初使用什么方法获取代码,都是为了e full exchange,然后出于某种原因,您尝试再次使用该代码将其交换为另一个访问令牌。您是否使用某种库来为您处理其中的一些内容?谢谢您,尼克,我刚从几天的假期返回办公室,发现您的回复非常棒。非常感谢,您的解决方案运行得非常好。Canno我不明白为什么shopify gem没有说清楚!砰。如果我能多次投票,我会的。也许我会推出一个“shopify_应用程序”附加gem,轻松提供存储永久令牌的选项。在我的测试中,在env['omniauth.auth']['credentials']['token']中返回的令牌与“交换”相同代币。其他人不是这样吗?