Я беру последний урок официального руководства по созданию приложения Shopify с NodeJs и ReactJS.Последний урок о Webhooks и как настроить.Я настроил конечную точку отдыха на своем внутреннем сервере для webhook, как описано, но остальная конечная точка не срабатывает.NgRok выдает ошибку 403 «Запрещено» каждый раз, когда я отправляю запрос на конечную точку отдыха.
Это приложение будет использоваться в качестве примера.Я проверил ссылки на стороне Shopify, которые отправляют запросы на сервер.Я также пытался использовать коа-корс, но также тот же результат.
app.prepare().then(() => {
const server = new Koa();
server.use(session(server));
server.keys = [SHOPIFY_API_SECRET_KEY];
server.use(
createShopifyAuth({
apiKey: SHOPIFY_API_KEY,
secret: SHOPIFY_API_SECRET_KEY,
scopes: ['read_products', 'write_products'],
async afterAuth(ctx) {
const { shop, accessToken } = ctx.session;
ctx.cookies.set('shopOrigin', shop, {httpOnly: false});
const pcreate = await registerWebhook({
address: `${HOST}/webhooks/products/create`,
topic: 'PRODUCTS_CREATE',
accessToken,
shop
});
console.log(pcreate.success);
ctx.redirect('/');
}
})
)
const webhook = receiveWebhook({secret: SHOPIFY_API_SECRET_KEY});
router.post('/webhooks/products/create', webhook, (ctx) => {
console.log('a product has been created', ctx.state.webhook);
})
server.use(graphqlProxy({version: ApiVersion.July19}));
router.get('*', verifyRequest(), async (ctx) => {
await handle(ctx.req, ctx.res);
ctx.respond = false;
ctx.res.statusCode = 200;
})
server
.use(router.routes())
.use(router.allowedMethods());
server.listen(port, () => {
console.log(`> Ready on https://localhost:${port}`);
})
})
Здесь весь сценарий: https://pastebin.com/ZTqKM9bM
Я ожидаю получить сообщение, когда webhook отправляетзапрос до конечной точки, но это ничего не делает.NgRok возвращает ошибку 403 «запрещено».