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 を用いて呼び出すと認証のエラーがなく無事に実行できました。
問題が解決しましたのでこの質問はクローズさせていただきます。
いつもShopifyをご利用いただき、ありがとうございます。 Shopifyは、皆様の日本語での利用体験の向上に努めております。さらなる改善のために皆様のご意見をお寄せい...
By JasonH May 9, 2025Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025