自建 iframe 里为什么用不了 App Bridge
现象#
在自己的 iframe 里嵌入应用页面,window.shopify 是 undefined,调 App Bridge 的 Toast、ResourcePicker 全部报错,单独打开页面却正常。
原因#
- App Bridge 只在 admin 顶层 iframe 注入 host,嵌套 iframe 拿不到
- 页面缺
shopify-api-keymeta,CDN 脚本无法识别应用身份 - CDN 的 app-bridge.js 始终是最新版,npm 包锁在旧版会导致 API 对不上
- 跨域 iframe 里父页面无法把 host 参数安全传给子页面
处理步骤#
- 确认页面由 admin 直接加载,而不是再套一层自己的 iframe
- 在 head 加
shopify-api-key的 meta 标签 - 引入
cdn.shopify.com/shopifycloud/app-bridge.js - 内嵌内容改为同源组件或跳转新窗口,不要嵌套 iframe
- 升级
@shopify/app-bridge-react到与 CDN 匹配的大版本
验收标准#
admin 内打开应用时 shopify.config.shop 有值,Toast 能弹出且控制台无报错。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。