#api #cors #shopify
#API #cors #Shopify
Вопрос:
const url = 'https://cors-anywhere.herokuapp.com/https://embedded-game.myshopify.com/admin/api/2020-10/draft_orders.json'
const requestOptions = {
method: 'POST',
withCredentials: true,
headers: {
'Content-Type': 'application/json',
'SHOPIFY_API_KEY': '___',
},
body: JSON.stringify({
"draft_order": {
"line_items": [
{
"custom": false,
"title": "Custom Product",
"product_id": 4008421883976,
"price": "1000.00",
"properties": [
{
"name": "custom engraving",
"value": "Happy Birthday Mom!"
}
],
"quantity": 5
}
],
"customer": {
"id": 1000
},
"email": "abhisheksrivastavabbn@gmail.com"
}
})
};
const createOrder = (e) => {
e.preventDefault();
console.log("Order Create Button clicked")
fetch(url, requestOptions)
.then(
console.log("Order Created!!")
)
.catch((err) => {
console.log(err)
})
}
Я создаю черновик заказа в Shopify, но получаемый ответ 401, то есть не прошедший проверку подлинности.
Хотя я передал ключ API, я не знаю, почему он отображается не прошедшим проверку подлинности.
Первоначально я столкнулся с проблемой CORS, которую я добавил https://cors-anywhere.herokuapp.com
перед своим URL. Теперь проблема CORS решена, но как справиться с ошибкой 401.
Заранее спасибо.
Ответ №1:
Ваше имя заголовка неверно. Вместо SHOPIFY_API_KEY
этого в документации Shopify указано, что оно должно быть названо X-Shopify-Access-Token
.
Кроме того, НИКОГДА не передавайте информацию об аутентификации через ненадежный прокси-сервер, как вы делаете для CORS. Если вам нужно добавить заголовки CORS, настройте свой собственный экземпляр этого (или другого) прокси.
Комментарии:
1. Спасибо, я позабочусь о том, чтобы никогда не передавать аутентификационную информацию через ненадежный прокси. И здесь я использовал
X-Shopify-Access-Token
вместоSHOPIFY_API_KEY
, но все же выдает ошибку 401.