Я пытаюсь загрузить файл .glb на продукт в магазине Shopify через Shopify GraphQL Admin API. Для этого он сначала возвращает подписанный URL-адрес облачного хранилища Google, куда я должен загрузить свой файл через HTTP-запрос PUT. После загрузки я должен прикрепить тот же URL к продукту с другим вызовом API.
Этот вопрос касается загрузки этого файла на подписанный URL-адрес облачного хранилища. Я включил все эти детали, чтобы облегчить получение ответа на этот вопрос. Итак, читайте до конца.
- Какие данные Shopify предоставляет мне, упоминается ниже.
{
"data": {
"stagedUploadsCreate": {
"stagedTargets": [
{
"parameters": [
{
"name": "GoogleAccessId",
"value": "threed-model-service--6bgx7cbe@shopify-applications.iam.gserviceaccount.com"
},
{
"name": "key",
"value": "models/a6436c066064bac3/windmill.glb"
},
{
"name": "policy",
"value": "eyJleHBpcmF0aW9uIjoiMjAyMC0wNy0yMVQwOToxNjoxMFoiLCJjb25kaXRpb25zIjpbWyJlcSIsIiRidWNrZXQiLCJ0aHJlZWQtbW9kZWxzLXByb2R1Y3Rpb24iXSxbImVxIiwiJGtleSIsIm1vZGVscy9hNjQzNmMwNjYwNjRiYWMzL3dpbmRtaWxsLmdsYiJdLFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLDE5NzE3MiwxOTcxNzJdXX0="
},
{
"name": "signature",
"value": "vz+OdcEmD9Kbv2FbXdxWNUk59XO2GmXzhvtDswXbDQNcyZpUufI85z5x2PFGv/XZ+tSBsl/S393pmy0Bu9xG7oVgOZcMIWEbOIm9kXgQunbjKQY3Ff3BBpMocB0xazzlYmckZozdJ8ZZkyox/c/gEe1QaxqW4+419iufuFHy4Bp3LL/aUr+ATNChwn9Dn8+XnHMOckZxDlbiggcF3dx+yBuTFia8FneaVSiU0M5DIWmHqHb2YDCV0KtEP6jfTj/PQVUjS8pn8EGhrRaMx7Q2A5G8Pycgc9H35hqJnnUKCTa3AYeyI45RbhddYnIWw9YrAADXuQYlVCo6LYBHjxsCWA=="
}
],
"resourceUrl": "https://storage.googleapis.com/threed-models-production/models/a6436c066064bac3/windmill.glb?external_model3d_id=bW9kZWwzZC00MDg5Ng==",
"url": "https://storage.googleapis.com/threed-models-production/models/a6436c066064bac3/windmill.glb?external_model3d_id=bW9kZWwzZC00MDg5Ng=="
}
],
"userErrors": []
}
}
}
- Используя эти параметры, я создаю подписанный URL-адрес следующим образом.
resourceUrl+"&signature="+signature+"&key="+key+"&policy="+policy+"&GoogleAccessId="+GoogleAccessId
Eg:
- Затем я пытаюсь сделать запрос PUT к этому URL-адресу с файлом .glb в POSTman, как показано на этом изображении - ›
со следующими заголовками.
- Но я не получаю ответа об успехе. Фактически, я получаю ошибку 400 со следующим сообщением.
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>MalformedSecurityHeader</Code>
<Message>Your request has a malformed header.</Message>
<ParameterName>signature</ParameterName>
<Details>Signature was not base64 encoded</Details>
</Error>
Может кто-нибудь указать мне, что я здесь делаю не так? Я сталкивался с этой ошибкой в течение нескольких дней и читал много вопросов и статей, но не мог заставить это работать. Поэтому мы очень ценим любое полезное предложение.