App reviews, troubleshooting, and recommendations
I've gone through the documentation on creating a store-specific custom app, but when I get to the part where I query for the product count, I get the error:
2023-03-16 20:59:46 | backend | /Users/elias/Desktop/zenvy-app/web/node_modules/@shopify/shopify-api/lib/clients/rest/rest_client.js:15 2023-03-16 20:59:46 | backend | throw new ShopifyErrors.MissingRequiredArgument('Missing access token when creating REST client');
Here's how I've configured my shopifyApp:
const shopify = shopifyApp({ api: { apiVersion: LATEST_API_VERSION, restResources, billing: undefined, }, auth: { path: "/api/auth", callbackPath: "/api/auth/callback", }, webhooks: { path: "/api/webhooks", }, sessionStorage: new SQLiteSessionStorage(DB_PATH), apiKey: process.env.APP_API_KEY, apiVersion: LATEST_API_VERSION, apiSecretKey: process.env.ADMIN_API_ACCESS_TOKEN, isCustomStoreApp: true, scopes: [ 'write_customers', 'write_products' ], isEmbeddedApp: false, hostName: process.env.HOST_NAME, restResources, });
To get to the above configuration, I first generated the project from npm init @shopify/app@latest app. Then I added additional fields according to the creating a store-specific custom app documentation. As you can see, I have set the apiSecretKey to my Admin API access token (NOT the API secret key), so I'm not sure why it's not working. Also note that I've tried logging all the `process.env` fields, and they are all correctly configured.
Also just FYI, I noticed that the documentation is partially out-of-date. The line:
const session = shopify.session.customAppSession("my-shop.myshopify.com");
should be:
const session = shopify.api.session.customAppSession("my-shop.myshopify.com");
And same for the `shopify.rest` commands, where it should be `shopify.api.rest`
Anyone know how I can resolve the error I am experiencing?
Thanks,
Elias
Solved! Go to the solution
This is an accepted solution.
Actually, it turns out the problem was the tutorial was meant for instantiating a shopifyApi
, not a shopifyApp
. To instantiate a shopifyApp
, I needed to add the configuration parameters into the api
object. Here's how I've now configured my shopifyApp
:
const shopify = shopifyApp({
api: {
apiVersion: LATEST_API_VERSION,
restResources,
billing: undefined,
apiKey: process.env.APP_API_KEY,
apiSecretKey: process.env.ADMIN_API_ACCESS_TOKEN,
isCustomStoreApp: true,
scopes: [
'write_customers',
'write_products'
],
isEmbeddedApp: false,
hostName: process.env.HOST_NAME,
},
auth: {
path: "/api/auth",
callbackPath: "/api/auth/callback",
},
webhooks: {
path: "/api/webhooks",
},
sessionStorage: new SQLiteSessionStorage(DB_PATH),
});
And that's why the documentation had the line correct as the below, since shopify
referred to shopifyApi
, not shopifyApp
:
const session = shopify.session.customAppSession("my-shop.myshopify.com");
I was able to figure it out! It turns out you need to move some of the configuration parameters into the api
object. Here's how I've now configured my shopifyApp:
const shopify = shopifyApp({
api: {
apiVersion: LATEST_API_VERSION,
restResources,
billing: undefined,
isCustomStoreApp: true,
apiKey: process.env.APP_API_KEY,
apiSecretKey: process.env.ADMIN_API_ACCESS_TOKEN,
},
auth: {
path: "/api/auth",
callbackPath: "/api/auth/callback",
},
webhooks: {
path: "/api/webhooks",
},
sessionStorage: new SQLiteSessionStorage(DB_PATH),
scopes: [
'write_customers',
'write_products'
],
isEmbeddedApp: false,
hostName: process.env.HOST_NAME,
});
It would be great if someone could update the documentation to reflect this new required format.
This is an accepted solution.
Actually, it turns out the problem was the tutorial was meant for instantiating a shopifyApi
, not a shopifyApp
. To instantiate a shopifyApp
, I needed to add the configuration parameters into the api
object. Here's how I've now configured my shopifyApp
:
const shopify = shopifyApp({
api: {
apiVersion: LATEST_API_VERSION,
restResources,
billing: undefined,
apiKey: process.env.APP_API_KEY,
apiSecretKey: process.env.ADMIN_API_ACCESS_TOKEN,
isCustomStoreApp: true,
scopes: [
'write_customers',
'write_products'
],
isEmbeddedApp: false,
hostName: process.env.HOST_NAME,
},
auth: {
path: "/api/auth",
callbackPath: "/api/auth/callback",
},
webhooks: {
path: "/api/webhooks",
},
sessionStorage: new SQLiteSessionStorage(DB_PATH),
});
And that's why the documentation had the line correct as the below, since shopify
referred to shopifyApi
, not shopifyApp
:
const session = shopify.session.customAppSession("my-shop.myshopify.com");
Hello
Issue has been resolved using above solution but now my app is not installing any other shop as well as app is not loading in installed store.
It's showing session not found error and give shop unauthenticated error.
Thank you
Hi @Divy_tatva,
Customs apps in Shopify can only be installed on a single store. If you'd like it to be installed on multiple stores, you need to make a public app. Here's more info on Distributing your Shopify app. As for your other errors, sorry I'm not sure what's causing those.
Hello @wristbands
As I mentioned app is not loading in the installed store, it's showing shop is unauthenticated and this app is a public app,
Shopify and our financial partners regularly review and update verification requiremen...
By Jacqui Mar 14, 2025Unlock the potential of marketing on your business growth with Shopify Academy's late...
By Shopify Mar 12, 2025Learn how to increase conversion rates in every stage of the customer journey by enroll...
By Shopify Mar 5, 2025