例如,假设开发者 X 为其客户提供了一款 Web 应用。客户使用自己的凭据登录该应用,且可以查看不同商店的销售数据。每个客户都可以访问一系列不同的商店。该开发者希望在其应用中嵌入一个数据洞察信息中心,以便客户登录时,仅能看到他们有权访问的商店的销售数据。此过程的执行应无需客户登录其 Google 帐号。
所提解决方案需要开发者创建一个社区连接器,通过嵌入网址传递一个令牌,然后基于该令牌过滤数据。
要求
- 信息中心查看者将登录第三方应用。
- 应用应通过嵌入网址向数据洞察信息中心传递一个唯一的令牌。该令牌可以用于查询过滤器信息,或让过滤器信息在其中加密。
- 社区连接器应该能够将该令牌转换为过滤器值。
限制
- 如果您是 G Suite 客户,并且您的管理员已禁止与“知道链接的任何人”共享云端硬盘文件,您将无法与贵组织以外的用户共享报告。
解决方案
要实现该解决方案,请完成以下步骤。
在 Web 应用中生成用户令牌
为您的 Web 应用中的每位登录用户生成唯一的令牌。您将在后续步骤中向嵌入式信息中心传递该令牌。
您应该使用该令牌过滤相关数据。选项包括:
- 创建一个 API 端点,该端点会针对特定令牌返回过滤后的数据或用户信息。
- 在该令牌中加密用户信息,以便稍后可以在连接器中将其解密。
创建新的社区连接器
查看社区连接器的工作原理并完成社区连接器 Codelab 以开始使用。使用用于创建连接器的本地开发工具,以实现更快捷、更轻松的开发流程。
编写连接器代码
getConfig()
应返回至少一个配置项。它将用于从嵌入网址的参数中捕获令牌。function getConfig(request) { var cc = DataStudioApp.createCommunityConnector(); var config = cc.getConfig(); config .newTextInput() .setId('token') .setName('Enter user token'); // TODO: Add additional config values if applicable for your connector config.setDateRangeRequired(false); config.setIsSteppedConfig(false); return config.build(); }
getData()
将能够通过request.configParams
对象访问令牌。使用令牌提取过滤后的数据或过滤现有的已提取数据。
根据上面的示例,令牌应为request.configParams.token
。在getData()
中,令牌会传递至 REST API 端点,以获取“商店 ID”列表。然后,系统会使用商店 ID 来构建 SQL 查询,以提取销售数据。var STORE_ID_API = 'https://www.example.com/api/storeid'; var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores" function getData(request) { var token = request.configParams.token; var storeIds = getStoreIdList(token); var queryString = constructQueryString(storeIds); var fetchedData = fetchData(queryString); // rest of getData() implementation } function getStoreIdList(token) { var url = STORE_ID_API; var response = UrlFetchApp.fetch(url); var parsedResponse = JSON.parse(response); return parsedResponse.storeIds; } function constructQueryString(storeIds) { var storeIdString = storeIds.join(','); var queryString = QUERY_STRING_PREFIX + ' WHERE storeId in (' + storeIdString + ')'; return queryString; }
创建信息中心
- 了解对于连接器而言部署和版本的运作方式。
- 为连接器创建生产部署。
- 使用生产部署链接在数据洞察中创建数据源和报告。
- 对于
token
配置参数,允许报告查看者修改参数值。 - 与所选用户或“知道链接的任何人”共享信息中心。
- 为报告启用嵌入功能。
将信息中心嵌入您的平台
- 了解报告网址参数的工作原理。
- 使用网址参数将动态生成的令牌值传递至嵌入式数据洞察报告。
您的嵌入网址类似于以下内容:
<pre class="prettyprint">
https://datastudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D
建议
- 您应该创建一个短期令牌。
- 确保信息中心不会向使用无效令牌查看的用户泄露任何信息。