Liquid、JavaScriptなどに関する質問
お世話になっております。現在nodeのテンプレートを使用してアプリ開発をしていてgraphqlを使用してShopifyAPIと通信しようと思っているのですがうまくいきません。
現在表示されているエラーは以下の通りです。
InvalidShopError: Received invalid shop argument
GraphQLのドキュメントには「アクセストークンが必要です。OAuthを使用してトークンを作成してトークンを作成し、管理画面で作成されたカスタムアプリは管理画面で認証されます」と記載がありました。
アプリはnodeのテンプレートを使用して作成し、ngrokを使用して起動をしておりストアにインストールすることも成功しているためOAuthの認証はうまくいっていると思っています。
nodeのテンプレート使用してアプリを作成した際にweb/index.jsには下記のようなコードが記述されておりapp.useにて認証してアクセストークンを発行しているのかな?とは思っているのですが、この下にあるapp.getを呼び出すと上に記載してあるエラーになります。
// All endpoints after this point will require an active session
app.use(
"/api/*",
verifyRequest(app, {
billing: billingSettings,
})
);
app.get("api/2022-10/graphql.json", async (req, res) => {
const session = await Shopify.Utils.loadCurrentSession(req, res);
// GraphQLClient takes in the shop url and the accessToken for that shop.
const client = new Shopify.Clients.Graphql(
session.shop,
session.accessToken
);
const query = `{
products (first: 10) {
edges {
node {
id
title
}}`;
const response = await client.query({ data: query });
return response;
});
graphqlを呼び出す際には別途別ファイルとかでOAuthの認証を行いアクセストークンを発行する必要があるのでしょうか?
shopifyapiへアクセスするための方法やアクセストークンの発行の方法やセッション部分についてご教授いただければ幸いです。
解決済! ベストソリューションを見る。
成功
graphql無事動きました。
Graphqlのドキュメントを参考にapp.get("app/hoge/")のような形で作成して中にGraphqlのクエリ作成しました。呼び出す際にaxiosで呼び出していて認証のエラーが生じていました。
テンプレートを用いてアプリを使用した際に useAppQuery を用いて呼び出すと認証のエラーがなく無事に実行できました。
問題が解決しましたのでこの質問はクローズさせていただきます。
成功
graphql無事動きました。
Graphqlのドキュメントを参考にapp.get("app/hoge/")のような形で作成して中にGraphqlのクエリ作成しました。呼び出す際にaxiosで呼び出していて認証のエラーが生じていました。
テンプレートを用いてアプリを使用した際に useAppQuery を用いて呼び出すと認証のエラーがなく無事に実行できました。
問題が解決しましたのでこの質問はクローズさせていただきます。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024