FROM CACHE - jp_header
解決済

nodeテンプレートを使用してgraphqlを使用する方法

sen25
Shopify Partner
15 2 0

お世話になっております。現在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へアクセスするための方法やアクセストークンの発行の方法やセッション部分についてご教授いただければ幸いです。

 

 

 

1 件の受理された解決策

sen25
Shopify Partner
15 2 0

成功

graphql無事動きました。

 

Graphqlのドキュメントを参考にapp.get("app/hoge/")のような形で作成して中にGraphqlのクエリ作成しました。呼び出す際にaxiosで呼び出していて認証のエラーが生じていました。

 

テンプレートを用いてアプリを使用した際に useAppQuery を用いて呼び出すと認証のエラーがなく無事に実行できました。

 

問題が解決しましたのでこの質問はクローズさせていただきます。

元の投稿で解決策を見る

1件の返信1

sen25
Shopify Partner
15 2 0

成功

graphql無事動きました。

 

Graphqlのドキュメントを参考にapp.get("app/hoge/")のような形で作成して中にGraphqlのクエリ作成しました。呼び出す際にaxiosで呼び出していて認証のエラーが生じていました。

 

テンプレートを用いてアプリを使用した際に useAppQuery を用いて呼び出すと認証のエラーがなく無事に実行できました。

 

問題が解決しましたのでこの質問はクローズさせていただきます。