如何将CTX/上下文传递到导入的膝关节炎中间件(CurrasHopfIyAuthH)? 我想把请求上下文传递到一个由需求()生成的膝关节炎中间件。我设置了一些API键,需要从以前的中间件传递到其中,但当我到达createShopifyAuth时,无法访问这些API键

如何将CTX/上下文传递到导入的膝关节炎中间件(CurrasHopfIyAuthH)? 我想把请求上下文传递到一个由需求()生成的膝关节炎中间件。我设置了一些API键,需要从以前的中间件传递到其中,但当我到达createShopifyAuth时,无法访问这些API键,shopify,next.js,koa,shopify-app,Shopify,Next.js,Koa,Shopify App,我已经尝试传入global server.context,但它似乎不是从以前的中间件中设置的 server.use(async (ctx, next) => { await shopifyKeys; if (url.parse(ctx.originalUrl, true).query.shop) { const shops = url.parse(ctx.originalUrl, true).query.shop; server.context.ke

我已经尝试传入global server.context,但它似乎不是从以前的中间件中设置的

server.use(async (ctx, next) => {
    await shopifyKeys;
    if (url.parse(ctx.originalUrl, true).query.shop) {
      const shops = url.parse(ctx.originalUrl, true).query.shop;
      server.context.keys = [shopifyKeys[shops].key, shopifyKeys[shops].secret];
      console.log(server.context.keys);
    }
    return next();
  });

server.use(
  createShopifyAuth({
    apiKey: server.context.keys[0],
    secret: server.context.keys[1],
    scopes: [
      'read_products',
      'read_checkouts',
      'read_orders',
      'write_orders',
    ],
    async afterAuth(ctx) {
      const { shop, accessToken } = ctx.session;
      ctx.cookies.set('shopOrigin', shop, {
        httpOnly: false,
        secure: true,
        sameSite: 'none',
      });
      const registration = await registerWebhook({
        address: `${HOST}/webhooks/orders/paid`,
        topic: 'ORDERS_PAID',
        accessToken,
        shop,
        apiVersion: ApiVersion.July20,
      });

      if (registration.success) {
        console.log('Successfully registered webhook!');
      } else {
        console.log(
          'Failed to register webhook',
          registration.result.data.webhookSubscriptionCreate.userErrors,
        );
      }
      ctx.redirect('/');
    },
  }),
); 

<> P> >如果你想知道如何将上下文放到第二个服务器中,请使用。

< P>我在膝关节炎方面被称为新手,但我唯一能做到的方法是通过cookies传递数据,<强>单独< /强>。以下是一个例子:

  server.use(
    createShopifyAuth({
      apiKey: SHOPIFY_API_KEY,
      secret: SHOPIFY_API_SECRET_KEY,
      scopes: [
        "read_products",
        "write_products",
        "read_script_tags",
        "write_script_tags",
        "read_themes",
        "write_themes",
      ],
      accessMode: "offline",

      afterAuth(ctx) {
        const { shop, accessToken } = ctx.session;

        ctx.cookies.set("shopOrigin", shop, {
          httpOnly: false,
          secure: true,
          sameSite: "none",
        });

        ctx.cookies.set("accessToken", accessToken, {
          httpOnly: false,
          secure: true,
          sameSite: "none",
        });

        ctx.redirect("/");
      },
    }),
  );