Apache Superset:能否通过Guest Token API与SDK直接嵌入图表?
问题
我已经通过Apache Superset的guest_token API成功获取了仪表盘的嵌入令牌,使用的请求负载如下:
body = { "resources": [ { "id": "1", "type": "dashboard" } ], "rls": [ ], "user": { "first_name": "John", "last_name": "Doe", "username": "johnd" } }
但官方Swagger文档只提到了dashboard类型的资源,未说明其他可用类型。我想直接嵌入单个图表,尝试用chart类型但不知道怎么获取图表的嵌入ID,也没有类似仪表盘嵌入ID的相关文档说明。想请教:能不能通过这个API和嵌入SDK像嵌入仪表盘一样直接嵌入图表?
回答
完全可以通过guest_token API和嵌入SDK直接嵌入单个图表,具体操作如下:
资源类型与ID获取
- 资源类型确实支持
chart,和dashboard的用法一致 - 图表的ID就是其在Superset后台的数字ID:
- 打开目标图表,浏览器地址栏里的
/superset/chart/{CHART_ID}/路径中,{CHART_ID}就是所需的ID - 也可以通过Superset的API(比如
GET /api/v1/chart/)批量获取图表列表及对应ID
- 打开目标图表,浏览器地址栏里的
- 资源类型确实支持
生成guest_token的请求负载示例
将资源类型改为chart并填入对应ID即可:body = { "resources": [ { "id": "123", # 替换为你的图表数字ID "type": "chart" } ], "rls": [], "user": { "first_name": "John", "last_name": "Doe", "username": "johnd" } }嵌入SDK的使用
获取到令牌后,使用嵌入SDK时,把原本指向仪表盘的配置改为指向图表即可,示例代码大致如下:supersetEmbedSdk.embed({ id: '123', // 图表ID type: 'chart', token: 'YOUR_GUEST_TOKEN', container: document.getElementById('chart-container'), // 其他可选配置 });注意事项
- 确保你的Superset版本支持图表嵌入(v1.4及以上版本已稳定支持)
- 嵌入的图表权限需要和guest_token关联的用户权限匹配,RLS规则同样对单图表嵌入生效
内容的提问来源于stack exchange,提问作者Seeker
相关产品推荐
相关产品推荐

