Я застрял на этом больше двух дней. Я не смог найти никаких ресурсов по этому поводу. Есть много решений с использованием 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. Спасибо!
Спасибо за Ваш ответ! Можно ли как-нибудь настроить Admin API на внешнем интерфейсе?
@KalpeshPatel не рекомендуется использовать API администратора на витрине магазина. Вы можете подвергнуть свой магазин внешним атакам, если не знаете, что делаете. Но вы можете создать частное приложение и использовать его пароль в качестве токена доступа для связи с Admin API, но вам нужно будет отключить все конечные точки и оставить только продукты только для просмотра без редактирования, чтобы предотвратить нежелательные изменения от третьих лиц. Но еще раз не рекомендую.