【问题标题】:How to get the myshopify_domain from a ShopifyApp::Authenticated controller without an API call如何在没有 API 调用的情况下从 ShopifyApp::Authenticated 控制器获取 myshopify_domain
【发布时间】:2019-05-26 18:26:13
【问题描述】:

我试图减少从继承自 ShopifyApp::AuthenticatedController 的控制器对 Shopify API 的不必要调用,例如获取 myshopify_domain:

myshopify_domain = ShopifyAPI::Shop.current.myshopify_domain

ShopifyApp::SessionRepository 或 ShopifyApp 中的其他地方是否有一些方法可以调用以检索 Shop.current.myshopify_domain 而无需实际调用 Shopify API 网络服务?如果没有,我能否将检索到的 myshopify_domain 存储在 ShopifyApp::SessionRepository 中?

【问题讨论】:

    标签: ruby-on-rails ruby shopify shopify-app


    【解决方案1】:

    如果您在 AuthenticatedController 中,请将以下内容转储到控制台:

    session.to_json
    

    您将看到您可以访问有关当前会话的各种内容,例如:

    session["shopify_domain"]
    session["shop_id"]
    

    我在使用多商店应用时遇到了同样的问题,我需要提取与特定商店相关的数据。 ShopifyAPI::Shop.current.myshopify_domain 是多余的,因为您正在减慢等待 Shopify 响应的控制器的速度,并且您正在调整 api 存储桶限制。 session 对象是避免所有这些的高级方法,并且应该可以从任何继承 ShopifyApp::Authenticated 控制器的控制器访问。

    【讨论】:

      【解决方案2】:

      您的问题令人困惑。在您调用 API 时,您显然已经知道 myshopify_domain,因为您无法使用商店名称和令牌进行 API 调用。

      所以现在我们已经过了这一点,您在问如何以某种方式让 myshopify_domain 更方便您使用?只需让自己成为一个小帮手,这样当您打开会话时,您就可以访问 shop_name 或任何您想要的。

      Shopify 总是在他们的请求中向您发送商店名称,因此您可以将其覆盖,因为它是一个参数,您自己的界面代码和调用也将设置商店名称,因此您现在真的很喜欢深奥的领域需要其他任何东西。

      您似乎陷入了经典的“狗追逐自己的尾巴”,但为什么呢?

      【讨论】:

        【解决方案3】:

        myshopify_domain 通常在会话参数中可用:

        如果 !session[:myshopify_domain].nil? && !session[:myshopify_domain].empty? 会话[:myshopify_domain] 别的 session[:myshopify_domain] = ShopifyAPI::Shop.current.myshopify_domain 结束

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多