如何将查询字符串从 Shopify 传递到嵌入式应用程序?

How to pass query string from Shopify to an embedded app?

我正在使用 Next.js 构建一个 Shopify 应用程序,我需要获取查询字符串以便我可以检查 getServerSideProps 商家的身份(请记住,不推荐使用 Cookie对于 Shopify 应用)

在访问某些应用程序时,我注意到其中一些应用程序在每个请求中都获取从 Shopify 传递下来的查询字符串。

这张图片显示了它在每个请求中的样子

这张图片显示了我的应用程序的行为方式

在此图像中,您可以看到当您将鼠标悬停在路线上时,不存在任何查询字符串,这意味着父应用程序以某种方式传递了这些字符串。

截至目前,我正在使用 Cookie 来传递 shopOrigin,但我觉得没有必要,如果我能够以某种方式在每个请求中获取查询字符串,我也可以使用 HMAC确认请求来自 Shopify。

从 Shopify 发出的对您的应用程序的任何调用在发出请求时都正确地提供了 shop 参数。在您自己的应用程序调用自身时,您也可能会使用商店名称作为查询字符串值。

请注意,您仍然可以使用 cookie 在内部验证您的会话,只是不要像我们过去那样通过 iframe 之外的第三方途径进行验证。 Shopify 有大量关于如何正确验证和构建应用程序的文档,请查看它们。他们甚至为您提供了一个可用的 Node 应用程序供您使用,因此您可以确保自己做对了。

解决方案非常简单。

Shopify 提供了一个 TitleBar AppBridge 组件,您可以使用它来处理应用程序的导航。它所做的是在每次路由更改时重新加载 iframe 和 hmac、商店、代码和时间戳都在请求中。它比客户端路由慢一点,但它按预期工作。

要使用它,您只需转到: 合作伙伴的仪表板/您的应用程序/扩展程序/嵌入式应用程序(点击管理)/导航(点击配置)并添加导航链接,然后您只需从[=12导入TitleBar =] 并将其放入 index.js