全部产品

群空间下如何自主开通嵌入第三方报表权限

更新时间:2019-05-05 15:31:10

之前将报表嵌入第三方是通过传入管控台个人信息中的 AccessId和AccessKey 获取token后提工单开通报表权限的方法。现在群空间下支持用户自助化开通报表权限,使用更加方便,下面是具体操作步骤:


一、 通过https接口获取accessToken

1.1 请求地址https://das.base.shuju.aliyun.com/api/ac3rdservice/token.json?accessId=xxx&accessKey=xxx&aliyunId=xxx&validityTime=60 (请替换为您的参数后访问)。


1.2 生成QuickBI AccessKey ID 和 QuickBI AccessKey Secret


如下图,在控制台首页进入群空间设置,通过组织管理->识别码生成身份识别码,该识别码用于标识访问者身份。


空间设置.PNG



识别码.PNG


1.3 参数


  1. accessId   //上图中QuickBI AccessKey ID
  1. accessKey  //上图中QuickBI AccessKey Secret
  1. aliyunId   //登录DATAIDE时使用的阿里云账号
  1. validityTime  // token失效时间 默认是60分钟;如传值5 表示五分钟后失效,如传值120 表示120分钟后失效;最长不超过4小时240

如果使用的是主账号,aliyunId为DATAIDE登录时使用的阿里云账号,如下图红框中的登录账号:



如果使用的是子账号,aliyunId这个参数的内容格式为:主账号的账号名:子账号,如下图红框内容:



例子如下:


https://das.base.shuju.aliyun.com/api/ac3rdservice/token.json?accessId=xxxxxxxxxxxxxxxxxxxxxxx&accessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&aliyunId=136***59:yuan_sub1&validityTime=60


请保持申请开通仪表板接入权限的帐号(支持主子账号)与仪表板制作者一致。


1.4 获取token


将以上参数拼接到 1.1 步骤中的地址中发送get请求获取token 。



当success为true的时候,说明获取token成功,accessToken的值就是token。


注意:


1.若在accessToken有效期内再次发送请求获取或者访问报表,都会自动延迟默认设置的token有效时长。例如:第一次获取validityTime设置为10分钟,在10分钟之内再次发送请求,会在此基础上续期10分钟。


2.只有在token失效后再次获取,token内容才会改变。


3.若想立即取消token时效,可以发送如下post请求,将参数修改为自己的即可:https://das.base.shuju.aliyun.com/api/ac3rdservice/tokenInvalid.json?aliyunId=XXX&accessToken=XXX


二、 添加需要嵌入的仪表板

如下图,在工作空间管理中选择对应群空间,选择嵌入报表标签页, 单击申请嵌入报表按钮选择报表添加:


第三方嵌入.PNG

三、 拼接免登url

仪表板查看.PNG


如图,预览的地址就是访问报表的地址;


预览地址域名为:das.base.shuju.aliyun.com  支持将域名修改为:bi.aliyun.com 。


将第一步中生成的accessToken追加到报表的url后面,即可免登查看了;


说明:经典仪表板URL中支持自定义携带参数,如:&customparam=customvalue 为自定义参数,则URL为:http://das.base.shuju.aliyun.com/token3rd/dashboard/view/pc.htm?pageId=703d6621-7aa0-4716-bcc1-515e3da794c2&accessToken=4a20bafc-ed0c-4db1-ac6c-08cfff3defa9&customparam=customvalue


重点提示


1.上面的自定义参数不是说您可以随意加一个自定义名字的参数在url中,参数必须来自于仪表板中事先规范定义好的参数,具体方法参看文档 如何向仪表板传递参数


示例:如下图,报表中添加了查询条件area=东北,则对应url后面则有相关参数:



2.新版仪表板暂不支持url传参使用。


具体示例

HTML代码模式

  1. <body>
  1.    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" width="100%" height="100%" src="
  1.        https://bi.aliyun.com/dashboard/view/pc.htm?spm=a2c10.10637826.0.0.1e6a4666IqoH1q&pageId=9f489954-8154-476b-a4a7-22e2aed48115&accessToken=81000c7197ca93c9bf874d4578c5f836'
  1.        ></iframe>
  1.    </body>

JS代码模式

  1. (function setIframe(){
  1.  var frame = '<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" width="100%" height="100%" src="'
  1.        + '//bi.aliyun.com/dashboard/view/pc.htm?spm=a2c10.10637826.0.0.1e6a4666IqoH1q&pageId=9f489954-8154-476b-a4a7-22e2aed48115&accessToken=81000c7197ca93c9bf874d4578c5f836'
  1.              + '"></iframe>';
  1.  var newNode = document.createElement('div');
  1.  newNode.innerHTML = frame;
  1.  newNode.style.height = '1600px';

  1.  var htmlBody = document.getElementsByTagName('body')[0];
  1.  htmlBody.insertBefore(newNode, htmlBody.firstChild);
  1. })();