从 React 调用 Shopify API

duu*_*ude 5 ruby ruby-on-rails shopify shopify-app

到目前为止我所做的

我按照本指南使用 Rails 后端 + React 设置 Shopify 应用程序:https ://medium.com/@esimonian16/setting-up-a-shopify-app-with-rails-5-1-webpack-react-and -polaris-b8535d911275

一切似乎都运行良好。我正在使用 shopify_app gem。

当我在商家仪表板中导航到我的应用程序时,Rails 中的家庭控制器呈现一个 React 应用程序,该应用程序显示一些产品(这些产品是从 Rails 传递到作为 json 响应的)。


我现在想做什么

我想在 React 的“列出客户”中有一个按钮,然后应该更新反应组件并将所有客户显示为列表。

我在以下位置创建了一个新控制器 my-app.com/customers

class CustomersController < ShopifyApp::AuthenticatedController
    def index
        customers = ShopifyAPI::Customer.find(:all, params: { limit: 10 })
        render json: customers
    end
end
Run Code Online (Sandbox Code Playgroud)

如果我my-app.com/customers在浏览器中访问,我会得到正确的 json 响应。


然后我尝试从 React 获取这些数据。

fetch('https://my-app.com/customers', {
      headers : { 
        'Content-Type': 'application/json',
        'Accept': 'application/json'
       }
})
.then(response => response.json())
.then(parsedJSON => {
  console.log(parsedJSON);

  // Update state
  // this.setState(...);
})
.catch(error => console.error(error));
Run Code Online (Sandbox Code Playgroud)

Rails 后端不允许请求获取这些数据,因为它没有被授权,所以它被重定向到 /login

在 React 中,我可以访问session.token,但是我不确定如何使用它来验证我的请求?

问题

  1. 如何对 Shopify API 进行此类调用?我是否在尝试正确的方法,即在 React 和实际 Shopify Api 调用之间使用我的后端?
  2. 我如何验证我的呼叫,以便他们像我/customers在浏览器中呼叫一样通过?
  3. 我想直接从 React 调用 Shopify Api 是一个非常糟糕的主意,因为我会将我的秘密暴露给全世界,对吧?
  4. 我究竟做错了什么?正确的做法是什么?

Dav*_*zar 1

每当我拨打电话时,它们都与我的应用程序相关,而不是与某些外部 URL 相关...所以在您的情况下... https://my-app.com/customers可能比 /customers 更好。