Liquid、JavaScriptなどに関する質問
Shopify埋め込み公開アプリを、node (Shopify App CLI)、 React で構築しています。
指定したアセットファイルをテーマのアセットに追加するようなアプリを作りたいのですが、
node (server.js)で以下のように記述すると、下記のエラーがでてしまい、困っています。
router.get("/post-assets", async (ctx, next) => { try { const shop = ctx.cookies.get("shopOrigin"); //get main theme ID const themeId = await fetch( ...
(メインテーマのIDを取得)
...
console.log(ID);
return ID; }); // post asset await fetch( `https://${shop}/admin/api/2019-04/theme/${themeId}/assets.json`, { methods: "PUT", }, { headers: { "X-Shopify-Access-Token": ctx.cookies.get("accessToken"), "Content-Type": "application/json", }, }, { body: JSON.stringify({ assets: { key: "template/index.liquid", src: "http://apple.com/new_bg.gif", }, }), } ) .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => { console.error("Error:", error); }); } catch (err) { console.log(err); } });
エラーメッセージ
86586851463 // メインテーマのIDは取得できる { errors: '[API] Invalid API key or access token (unrecognized login or wrong password)' }
アセットファイルの追加方法が間違っているでしょうか? 記述がもし間違っていたら、教えていただけると幸いです。
解決済! ベストソリューションを見る。
成功
以下の例が参考になるかと思います。
https://shopify.dev/docs/admin-api/rest/reference/online-store/asset?api[version]=2020-04#update-202...
ご提示のコードは、index.liquidというテンプレートを追加するコードなので、画像を追加する場合は、
"key": "assets/empty.gif", "attachment": "R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==\n" }
のようになると思います。
また、エラーの内容は、アクセストークンのパーミションが足らないようにも見えますので、下記をみて、テーマの更新ができるscopeをつけてアクセストークンを生成しているか、確認された方が良いと思います。
https://shopify.dev/docs/admin-api/access-scopes
成功
以下の例が参考になるかと思います。
https://shopify.dev/docs/admin-api/rest/reference/online-store/asset?api[version]=2020-04#update-202...
ご提示のコードは、index.liquidというテンプレートを追加するコードなので、画像を追加する場合は、
"key": "assets/empty.gif", "attachment": "R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==\n" }
のようになると思います。
また、エラーの内容は、アクセストークンのパーミションが足らないようにも見えますので、下記をみて、テーマの更新ができるscopeをつけてアクセストークンを生成しているか、確認された方が良いと思います。
https://shopify.dev/docs/admin-api/access-scopes
ありがとうございます。
画像を追加する方法参考にし、また、そもそも最初に書いたコードの中にいくつかミスがあり、それを修正して、無事AssetsのPUTができました。(お恥ずかしながらthemesがthemeになっていたり、fetchの記述が間違っておりました。。)
大変ありがとうございました。
Shopifyのチェックアウトは世界一コンバージョン率が高いチェックアウトです。2023年4月に実施された世界3大手マネジメントコンサルティング会社の共同調査によると、Sho...
By Minami_ Apr 11, 2024Shopifyのルーツ Shopifyは、スノーボードをオンラインで販売したいという夢を叶えるために2004年に誕生しました。当時は大企業だけがインターネットで販売す...
By JapanGuru Apr 7, 2024リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024