我使用yarn create @Shopify/app 创建了shopify 公共应用程序。我得到的 NodeJS 代码模板将包含 oAuth 进程和会话令牌。以下是我在shopify公共应用程序中创建的API。
现在,当我在邮递员中调用此 API 时,出现以下错误
我不知道如何给出商店名称以及在哪里获取商店名称和access_token?我想问一下,在其他软件中是否可以调用shopify公共应用程序中创建的API?它将充当第三方集成。请有人指导我。
不幸的是,Express Shopify 应用程序与您通常的 Express 应用程序不同。当客户安装您的应用程序时,他们会被识别并作为“会话”存储在您的数据库中。正如您所看到的,返回的错误是“未提供商店”。
“店铺”等信息由前台提供。在引擎盖下,“前端”有添加商店的代码,还有一个安全授权标头、一个“Bearer”令牌useAuthenticatedFetch.js。
等等前端代码,可能看起来很简单,ProductsCard.jsx:
const response = await fetch("/api/products/create");
不幸的是,不记名令牌密钥关闭了时间戳,时间戳确实会过期,因此您需要快速生成令牌并将其复制粘贴到邮递员中。
编辑:我找到了答案,答案就在我们面前。抱歉我之前没看到这个。
// If you are adding routes outside of the /api path, remember to
// also add a proxy rule for them in web/frontend/vite.config.js
我正在开发一条名为
/dogs
的路线。我在web/frontend/vite.config.js
中添加了狗
# web/frontend/vite.config.js
proxy: {
"^/(\\?.*)?$": proxyOptions,
"^/api(/|(\\?.*)?$)": proxyOptions,
"^/dogs(/|(\\?.*)?$)": proxyOptions,
然后在服务器端我可以添加
/dogs
app.use(express.urlencoded({ extended: true }));
app.use("/api/*", shopify.validateAuthenticatedSession());
app.use("/dogs", dogRoutes);
现在我可以轻松到达路线,而无需出现身份验证问题,例如
Shop null