【问题标题】:Google Data Studio Community Connector: Accessing URL Parameters in App ScriptGoogle Data Studio 社区连接器:在应用脚本中访问 URL 参数
【发布时间】:2021-10-22 00:01:59
【问题描述】:

我正在按照 Row level filtering with Embedded dashboards 教程使用 Data Studio 作为报告 UI/后端(在 Python 中将 Anvil 作为前端)构建一个安全的多租户仪表板,目的是过滤来自基于特定用户权限的 BigQuery 表。

我已按照建议成功完成initial connector tutorial。到目前为止,我也成功完成了以下步骤(1-4):

  1. 在 Anvil 中构建用户身份验证并在 user 表中设置权限(JSON 包含每个用户可以查看的特定字段值)
  2. 构建机制以在 Anvil 中创建 access_token,基于​​用户和 unix 时间戳组合的十六进制 md5 哈希,有效期为一小时
  3. 在 Anvil 中安全地设置和存储 app_secret 以验证入站请求
  4. 在 Anvil 中创建 API 端点,该端点验证 app_secret 并验证 access_token 并返回包含 user_emailpermitted_accounts 的 JSON

现在我要构建自定义连接器了,目的是构建流程的下一部分:

  1. 按照this 部分,通过编码并将access_token 包含在嵌入URL 中(报表将通过iFrame 嵌入),将access_token 传递给Data Studio
  2. 根据语句“这将用于从嵌入 URL 的参数中捕获令牌”,从应用脚本中的嵌入 URL 中提取 access_token。来自this部分
  3. 使用 App Script 中的 app_secretaccess_token 访问 API 端点,以验证并接收与 access_token 关联的用户权限,如果验证检查在 Anvil 中通过,则返回相应的错误消息
  4. 根据用户权限构造查询并使用此approach 从 BigQuery 获取数据 ...然后设置架构等...

但是,在到达此流程的第 6 步时,我需要从 URL 中解析 access_tokenWrite the Connector Code 部分中包含的代码将 token 作为用户输入的文本字段,并且不采用它来自嵌入 URL 的参数(这对我来说毫无意义,因为让用户不断手动转置短期令牌似乎否定了本练习的意义)。

我也无法在 API reference 中找到有关如何实现此目的的文档。

请问,有人知道如何从 App Script Community Connector 中的报告嵌入 URL 中捕获参数吗?我从文档中认为这是可能的:

getConfig() 应该返回至少一个配置项。这将用于从嵌入 URL 的参数中捕获令牌。

感谢您抽出宝贵时间!

【问题讨论】:

  • 在配置中是令牌参数.setAllowOverride(true); 并且在报告设置中启用了按 url 的过滤器被激活了吗?在您的报告中创建一个虚拟输入框并在 url 中查看它。

标签: google-apps-script google-cloud-platform google-bigquery google-data-studio anvil


【解决方案1】:

一个。我假设access_token 是您的getConfig 中的一个可覆盖的配置参数。

b.创建初始报告时,在创建数据源期间,您可以在access_token 配置字段中输入任何值。但是,请选中“允许在报告中修改“access_token””框。这意味着,报表查看者将能够覆盖此值,即使他们没有对报表或数据源的编辑权限。

c。确认您的 setp #5 正在按照说明 here 传递 access_token 的覆盖值。

d。而已。现在,您在初始报告创建期间为 access_token 输入的值无关紧要。对于用户 X,您的门户将值 hash(user, timestamp) 作为 access_token 的值传递。在连接器的 getData 函数中,request.configParams.access_token 将返回该特定值。然后,您可以使用该值调用您的端点以取回用户身份。

【讨论】:

  • 感谢@MinhazKazi,感谢您的详细解释,我终于设法让这部分工作了!但是,我正在尝试从 BigQuery 获取数据,但遇到“从社区连接器返回的数据中收到的列数与列数不匹配......”错误。我一直在使用这个连接器作为模板,在调试时我可以看到对 getData(request) 的响应与预期的格式不匹配(即特定字段子集的模式和行数据),因此我很难过。 .
  • 您是否在 getData 中使用了高级服务/useQueryConfig?
  • 我现在,谢谢@MinhazKazi!工作一种享受...
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 2022-09-23
相关资源
最近更新 更多