2

目标

我想创建一个以下应用程序。

商家为每位客户选择“顶级产品”。这些将存储在我的后端。

例如:

  • 客户甲:
    • 产品 X,变体 1
    • 产品 Y,变体 3
  • 客户乙:
    • 产品 X,变体 2
    • 产品 Z,变体 1
    • 产品 W,变体 1

然后客户应该能够登录,进入商店中的页面(例如store.com/top_products)并查看他们自己的“顶级产品”。

到目前为止我设法做的事情

我设法将 rails Shopify 应用程序(https://github.com/Shopify/shopify_app,它使用 shopify_api gem)部署到 Heroku 并将其连接到我的商店。

我还设法设置了应用代理。我从应用程序中获得了对管理应用程序页面和应用程序代理的正确响应。

基本上我的公共应用程序似乎工作正常。

我现在必须做的

我将不得不在应用代理中调用这样的东西:

ShopifyAPI::Product.find(:all, params: { limit: 10 })

但是,这只能从ShopifyApp::AuthenticatedController(如在管理应用程序控制器中)而不是ShopifyApp::ApplicationController(如在代理控制器中)调用。

到目前为止,我只设法调用 API 并从商店的管理仪表板查看正确的结果。

我无法设法 ShopifyAPI::Product.find 从未经身份验证的应用程序代理调用。

谷歌并没有真正帮助我。这类似于我的问题(虽然没有解决方案):https ://ecommerce.shopify.com/c/shopify-discussion/t/how-to-connect-to-a-store-with-api-from-app -proxy-request-429417

问题

  1. 从 App Proxy 调用 API 的最佳方式是什么?
  2. 或者如何使用与商店 API 对话的后端在商店前端显示一些信息?应用代理是正确的方法吗?
4

1 回答 1

7

来自 Shopify 的 App Proxy 调用为您提供了 store 作为参数shop。因此,您可以在后端查找商店并使用经过身份验证的会话执行任何操作。我一直使用 App Proxy 和 Webhooks 来做这件事。您验证呼叫来自 Shopify,您获得了商店名称,因此您可以打开一个安全会话。此外,您可以通过 App Proxy 调用发送客户 ID,以便为客户获取产品。

你在做正确的事情,App Proxy 是正确的模式,所以继续。你离荣耀只有几分钟的路程。

从我的代理控制器之一...

shop = Shop.find_by(shopify_domain: params[:shop])
if shop
  shop.with_shopify_session do
    products = ShopifyAPI::Product.find(params[:id])
    # la-dee-da I got a product...
  end
end
于 2017-12-19T03:10:36.107 回答