Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

We're moving the community! Starting July 7, the current community will be read-only for approx. 2 weeks. You can browse content, but posting will be temporarily unavailable. Learn more

Re: koa-shopify-auth too many redirects

Solved

koa-shopify-auth too many redirects

Mykhailo
Shopify Partner
9 1 6

Hello community!

I am trying to deploy Node Shopify Public App on different domains for Frontend and Backend.

Each time I call https://<MY_BACKEND_PATH>/auth?shop=<MY_SHOP> I get HTTP 302 with Location same as original request https://<MY_BACKEND_PATH>/auth?shop=<MY_SHOP>

I have NextJS run as static site on another domain. I have provided all correct Env variables to my Backend. I am using latest Shopify CLI. I have updated my Partner Dashboard correctly.

All is working fine with shopify node server i.e. with ngrok but fails in real life.

What have I missed?

Accepted Solution (1)
Mykhailo
Shopify Partner
9 1 6

This is an accepted solution.

ok, seems having prefix in afterAuth is bad idea since it will not work for case when Koa deployed not on root /. Creating domain name and assigning it to my host's / solved the problem

View solution in original post

Replies 2 (2)

Mykhailo
Shopify Partner
9 1 6

ok, found issue... that's because I need to use prefix for Koa auth lib. Since I need to prepend each request with /dev/index I enforced to add 

prefix: "/dev/index/
 
to my createShopifyAuth method. Any idea how to overcome this?
 

 

server.use(
  createShopifyAuth({
    prefix: "/dev/index",// I need this to have /dev/index/auth/inline redirect but not /auth/inline since it is not served by my Backend
    async afterAuth(ctx) {
      console.log("afterAuth", ctx);
      // Access token and shop available in ctx.state.shopify
      const { shop, accessToken, scope } = ctx.state.shopify;
      const host = ctx.query.host;
      ACTIVE_SHOPIFY_SHOPS[shop] = scope;

      const response = await Shopify.Webhooks.Registry.register({
        shop,
        accessToken,
        path: "/webhooks",
        topic: "APP_UNINSTALLED",
        webhookHandler: async (topic, shop, body) =>
          delete ACTIVE_SHOPIFY_SHOPS[shop],
      });

      if (!response.success) {
        console.log(
          `Failed to register APP_UNINSTALLED webhook: ${response.result}`
        );
      }

      // Redirect to app with shop parameter upon auth
      ctx.redirect(`${process.env.BACKEND_URL}/?shop=${shop}&host=${host}`);
    },
  })
);

 

Mykhailo
Shopify Partner
9 1 6

This is an accepted solution.

ok, seems having prefix in afterAuth is bad idea since it will not work for case when Koa deployed not on root /. Creating domain name and assigning it to my host's / solved the problem