如何让Shopify APP跳出iframe以网页形式打开?求生成指定格式链接
实现Shopify APP以独立网页打开的跳转链接生成方案
要让你的Shopify APP跳出iframe、以独立网页形式打开,核心是生成符合Shopify规范的API权限重定向链接,具体步骤如下:
1. 拆解目标链接的核心组成
你需要的链接格式本质是Shopify Admin的API权限重定向端点,各部分含义:
store.myshopify.com:目标店铺的域名,替换为实际店铺域名398469955819:你的APP在该店铺内的API权限IDappLoadId=xxx:Shopify生成的会话验证标识,用于确保跳转合法性
2. 获取API权限ID
这个ID是APP在对应店铺的权限记录ID,获取方式:
- 通过Shopify Admin API调用
GET /admin/api/[API版本]/api_permissions.json,返回结果中的id字段即为该值 - 或者在APP安装完成后,Shopify返回的安装回调响应中,也会包含该权限ID
3. 获取appLoadId
appLoadId是Shopify为当前会话生成的唯一标识,获取方式:
- 若使用Shopify App Bridge,通过
AppBridge.getState().appLoadId直接获取 - 从当前iframe页面的URL参数中提取(Shopify加载APP时会自动携带该参数)
4. 拼接并实现跳转
拼接完整链接
按格式替换变量:
https://[店铺域名].myshopify.com/admin/api_permissions/[权限ID]/redirect?appLoadId=[appLoadId]
触发跳转(强制跳出iframe)
不要用普通<a>标签(默认仍在iframe内打开),推荐两种方式:
- 原生JS强制在顶级窗口打开:
window.top.location.href = '拼接好的完整链接'; - 用Shopify App Bridge的Redirect组件(更符合官方安全规范):
import { Redirect } from '@shopify/app-bridge/actions'; import { createApp } from '@shopify/app-bridge'; const app = createApp({ apiKey: '你的APP API密钥', shopOrigin: window.location.host, }); const redirect = Redirect.create(app); redirect.dispatch(Redirect.Action.REMOTE, { url: '拼接好的完整链接', });
注意事项
- 确保你的APP拥有对应店铺的有效API权限,否则重定向会失败
appLoadId是一次性会话标识,过期后需重新获取- 该方案是Shopify官方推荐的跳出iframe方式,可避免浏览器X-Frame-Options拦截
内容的提问来源于stack exchange,提问作者Jaskaran Singh
相关产品推荐
相关产品推荐

