我们可以使用 Shopify Storefront GraphQL API非管理员按 SKU 获取产品吗?

问题描述

我已经坚持了两天多了。我无法找到有关此的任何资源。使用 ADMIN API 有很多解决方案,但我没有管理员访问权限。我试图解决的问题是:我只能访问产品的 SKU。我需要使用 Storefront API 从 Shopify 获取所有其他信息(标题、价格、描述、特色图像等)。这是获取产品的函数

function loadProducts(items) {
    let products = [];

    items.forEach((item) => {
        const sku = item.id;
        if (sku !== "undefined") {
            /* Todo: Need to figure out this query*/
            const query = `{
         products(first: 1,query: "sku:<sku>") {
    edges {
      node {
        title
        id
        description
      }
    }
  }
       }`;

            const STOREFRONT_ACCESS_TOKEN = 'xxxxxxxxxxxxxxx';
            const GRAPHQL_URL = 'https://<my-store>.myshopify.com/api/2021-01/graphql.json';
            const GRAPHQL_BODY = {

                'method': 'POST','headers': {
                    'X-Shopify-Storefront-Access-Token': STOREFRONT_ACCESS_TOKEN,'Content-Type': 'application/json',},'body': JSON.stringify({ query })

            }
            products.push(getData(GRAPHQL_URL,GRAPHQL_BODY));
        }
    });
    return Promise.all(products);
}
function getData(url,body) {
    return new Promise((resolve,reject) => {
        fetch(url,body)
            .then(res => res.json())
            .then(data => {
                resolve(data);
            })
            .catch((error) => {
                reject(error);
            });
    });
}

如果您能将我重定向到正确的方向,我将不胜感激。请不要:我只假设使用 Storefront API,而不是 ADMIN API。谢谢!

解决方法

您无法使用 StoreFront API 按 SKU 查询产品。

StoreFront 产品的可用查询参数为:

  • available_for_sale
  • created_at
  • product_type
  • 标签
  • 标题
  • updated_at
  • variants.price
  • 供应商

因此您不能仅使用 StoreFront API 执行此操作,因为 SKU 未公开(如 Admin API)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...