Data Studio CSRF令牌是如何生成的? (刷新源数据)

时间:2018-07-04 18:01:22

标签: google-data-studio

TLDR::在未打开Studio的情况下更新Data Studio报表数据需要使用csrf令牌才能进行API调用。 该令牌是如何生成的?

简介:
Google Data Studio非常适合以多种方式显示和整理数据。随着社区连接器的出现,我们现在可以从任何地方获取数据。
一个明显的用例是通过将报告嵌入仪表板本身来使用报告显示仪表板指标。然后出现两个问题:

  • 我们如何调整请求,以便不必生成一切并通过网络发送?
  • 我们如何确保显示的数据是最新的?

问题排查:
第一个问题很容易-使用连接器设置发送参数(对于嵌入式报表而言,效果不佳,因为只能通过Data Studio进行更改,否则无法保存)或将视图参数保存在服务器上,然后使用它们来更改发送至Data Studio基于查看者。 (通过Google帐户电子邮件或连接器身份验证令牌。)

第二个要难一点,这就是问题所在。采用存储每人查看嵌入式报表的视图参数的方法,这意味着当参数更改时,报表需要更新。

尝试解决的方法:
在非嵌入式报表中执行此操作最明显的方法是单击Data Studio中的小刷新按钮。

执行此操作的第二种方法(某种程度上很明显)可能是使用chrome扩展名或自定义代码以编程方式单击按钮。但是,这需要浏览器才能打开报告本身。每个嵌入式报表(使用查看者的凭据)都需要向Data Studio打开一个窗口,并在用户查看嵌入式报表时登录,以使刷新代码起作用。在这种情况下,用户最好只在Data Studio本身中查看报告!

另一种选择:
Data Studio的刷新功能通过POST将一些JSON传递到称为REST端点的REST端点来工作: https://datastudio.google.com/updatePrefetch。 JSON由一个报告ID和一个称为“字段掩码”的字段组成,并且该调用必须包含两个HTTP标头:

  • 一个cookie,因此Google知道谁在打电话
  • 一个称为 x-rap-xsrf-token
  • 的跨站点请求伪造标头

可以通过检查Data Studio在刷新报表时提出的请求来找到标题,但是显然想向用户解释这一点可能很难。值得庆幸的是,即使没有特别注明,cookie也会由Google设置并随每个请求一起发送。令牌头是另一回事。

  

问题:
  与及时的数据更新和定制有关:

     
      
  • 如果有其他方法可以使Data Studio刷新源数据,则在刷新嵌入式报表或通过API调用时,   怎么样?
  •   
  • 如果没有,那么Google如何为updatePrefetch API提出 x-rap-xsrf-token
  •   

我错过了一个API调用吗?是否有一些基于cookie生成算法?

我知道csrf令牌的意义与我们试图做的有点相反,因此第一个问题是:还有另一种方法吗?

非常感谢,
我希望至少这可以对其他人有所帮助! :D

PS:急切地等待向社区连接器开发人员打开“数据控制”小部件!

0 个答案:

没有答案