Можем ли мы получить продукт по SKU, используя Shopify Storefront GraphQL API (НЕ ADMIN)?

avatar
Kalpesh Patel
28 февраля 2021 в 18:45
1643
1
0

Я застрял на этом больше двух дней. Я не смог найти никаких ресурсов по этому поводу. Есть много решений с использованием ADMIN API, но у меня нет прав администратора. Проблема, которую я пытаюсь решить: у меня есть доступ только к SKU продукта. Мне нужно получить всю другую информацию (название, цена, описание, FeaturedImage и т. д.) из Shopify с помощью Storefront API. Вот функция для получения продукта:

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. Спасибо!

Источник

Ответы (1)

avatar
drip
28 февраля 2021 в 22:00
1

Вы не можете запрашивать товары по SKU с помощью StoreFront API.

Доступные параметры запроса для продуктов StoreFront:

  • доступно_для_продажи
  • created_at
  • тип_продукта
  • тег
  • название
  • updated_at
  • варианты.цена
  • поставщик

Поэтому вы не можете сделать это только с помощью StoreFront API, так как SKU не отображается (как и Admin API).

Kalpesh Patel
1 марта 2021 в 20:57
0

Спасибо за Ваш ответ! Можно ли как-нибудь настроить Admin API на внешнем интерфейсе?

drip
2 марта 2021 в 06:52
1

@KalpeshPatel не рекомендуется использовать API администратора на витрине магазина. Вы можете подвергнуть свой магазин внешним атакам, если не знаете, что делаете. Но вы можете создать частное приложение и использовать его пароль в качестве токена доступа для связи с Admin API, но вам нужно будет отключить все конечные точки и оставить только продукты только для просмотра без редактирования, чтобы предотвратить нежелательные изменения от третьих лиц. Но еще раз не рекомендую.