Embed SDK 与创建签名嵌入网址端点

Looker 非常适合让您的所有用户或客户访问数据。正如我们常说的那样,Looker 有助于“让数据人人可用”。您可以让您的用户自行查看查询结果,而无需让分析人员手动创建信息中心;借助 Looker,您的用户甚至可以自行进行分析。一种方法是使用 Looker 的签名嵌入功能。本页将介绍实现已签名嵌入的两种不同方法:Looker API 和 Looker 的嵌入软件开发套件 (SDK)。

假设您想要将查询结果集成到公司自己的应用或内部系统中,并且不想向所有用户提供 Looker 凭据。您可以使用 Looker 的签名嵌入功能来实现这一点。这与单点登录工作流(例如 LDAP 或 SAML)的一般引用不同,后者也可以集成到 Looker 实例中。

已签名嵌入的 signed 表示,在创建嵌入网址并从浏览器发送请求后,用户的 Looker 会话已开始,并且用户已登录。这些网址已签名,只能使用一次。这些网址会创建 iframe,以便开发者将探索、Look 和信息中心等内容嵌入到贵公司的网站或应用中。使用该网址时,如果用户没有现有账号,系统会根据传入网址的参数为其创建一个账号。

开发者可以利用 Looker API 或 Looker API SDK 动态创建这些 iframe。您可以应用主题并自定义内容,以满足您的公司或特定用户群体的需求。如需详细了解将 Looker 嵌入到内容中的潜力,请观看完整演示,其中介绍了如何应用这些概念。

那么,如何开始?

现在,假设您已观看演示,想要了解如何将这些 iframe 添加到您的应用中。您应从哪里开始,哪种方法适合您的用例?

Looker 提供了几种主要的生成此类内容的选项,可放置在您的应用或网站中:

  • Looker 的示例代码库,包含使用各种编程语言(C#、Python、Node.js、Python、Ruby、PHP)编写的脚本
  • REST API 中包含的 Create Signed Embed Url 端点,可通过 HTTP 请求或我们的某个 SDK 访问
  • Looker 的嵌入 SDK

我们通常建议客户使用 Embed SDK 和 REST API 端点(而不是示例脚本),因为我们的开发者会经常更新 SDK 和 REST API,并且它们创建的网址通常比脚本要短。(较短的网址更易于管理。)此外,Embed SDK 和 REST API 端点还提供了一些有用的安全功能,本页稍后将对此进行讨论。

假设我们希望应用用户能够通过 Looker 在客户应用的数据页面上查看信息中心。常见的嵌入工作流程可能如下所示:

  1. 用户登录应用。他们可以使用 SAML 服务,也可以仅使用电子邮件地址和密码登录应用。
  2. 应用确认凭据正确无误,且用户可以成功访问相应内容。
  3. 根据登录工作流的响应,系统会将用户的信息传递给一个函数,该函数可能会使用我们的示例脚本之一来创建已签名的嵌入网址。这些脚本需要用户的权限、群组 ID、嵌入密钥、主机网址、用户属性(如名字和姓氏)、访问过滤器、会话长度以及我们希望用户能够访问的网址。系统会将所有这些信息发送到 Looker,并创建一个已签名的网址。
  4. 用户前往应用中的数据页面,此签名网址位于 iframe 中;接下来,浏览器会在 iframe 网址上传送请求。信息中心会以个性化体验进行传播,用户可以在应用中访问 Looker 中的数据。

Create Signed Embed Url 端点

开发者可以使用 Looker 的 REST API 或其中一个 SDK,根据一组参数生成经过编码且已签名的网址。这是 POST 请求。发出 API 请求的服务器必须能够使用管理员权限对 Looker 进行身份验证。使用此端点的一个主要优势是,无需嵌入密钥即可使用该端点;该端点已配置为检索当前的嵌入密钥。对此端点的调用也不会计入 API 速率限制。一般来说,与嵌入密钥相比,API 凭据更易于轮替。多个 API 3 凭据可同时处于有效状态,但一次只能在一个实例上使用一个嵌入密钥。这样更便于在不服务中断的情况下更换凭据。与我们的签名嵌入网址脚本示例代码库中的示例脚本相比,Create Signed Embed Url 端点还可以创建更简短、更简洁的网址。

下面是一个使用 Create Signed Embed Url 端点的工作流程示例:

  1. 用户尝试登录您的应用,通常使用用户名和密码组合,也可能通过身份提供方 (IdP) 登录。
  2. 如果用户成功登录应用,系统会运行 Create Signed Embed Url 端点。开发团队创建的函数会将该用户的特定凭据传递到此端点,然后 Looker 会将签名网址返回到您的服务器。
  3. 用户可以选择点击应用中的数据标签页。当他们导航到“数据”标签页时,此页面会从您的服务器请求签名网址,并将其置于网页上的 iframe 中。
  4. 用户会看到从 Looker 无缝嵌入您的应用中的信息中心,其中包含实时数据。

嵌入 SDK

Looker 的 Embed SDK 是一系列经过封装的 JavaScript 函数,可让开发者更轻松地嵌入 Looker 内容。借助 Embed SDK,您可以将 Looker 内容添加到应用或网站中的网页,而无需创建特定的 HTML 元素。借助此 SDK,开发者可以在 HTML 页面和您的 Looker 内容之间创建安全的点对点通信。Embed SDK 现在会封装 iframe,这意味着客户将无需创建或管理 iframe。嵌入 SDK 仅适用于浏览器应用,但它确实包含一个用于生成已签名网址的辅助实用函数。这两种语言版本均可供使用。即使 nmpjs 注册表中收录了 Embed SDK,您也不需要使用 Node.js Web 服务器。

Embed SDK 的一项独特功能是,您还可以利用 Looker 组件,这是一系列可重复使用的代码块,旨在帮助实现 Looker 的设计系统。

嵌入 SDK 的另一个优势是,它提供了大量预构建函数,可为开发团队省去大量工作。其中一个主要示例是取消点击。Embed SDK 使用 MessageChannel API,而不是 postMessage。也就是说,在同一网页上运行的两个脚本可以使用 postMessage API 相互通信。这样,其他函数就可以与 iframe 通信,或者让其他函数与 iframe 通信

嵌入 SDK 的工作流程示例如下:

  1. 用户尝试登录到您的应用。
  2. 如果登录成功,用户的信息会发送到运行应用的服务器上的 Node.js 帮助程序实用程序。此操作会将所需信息传递给 Looker 实例,并返回签名网址。
  3. 用户前往应用中的数据页面,其中使用嵌入 SDK 放置 iframe。由于 Embed SDK 是用 JavaScript 编写的,因此我们可以使用 LookerEmbedSDK.createDashboardWithId 并将 iframe(签名网址)附加到网页上的特定 DOM 元素(通常是 span 或 div)作为目标。
  4. 系统会加载此页面,并且签名网址会从 Looker 实例加载信息中心。

那么...哪种方法最好?

您的开发团队使用哪种方法取决于您的具体用例:

维恩图,突出显示了 Create Signed Embed Url 和 Embed SDK 方法之间的异同。

如上图所示,Create Signed Embed Url 端点方法和之前介绍的嵌入 SDK 方法都让开发团队能够专注于产品,而不是 Looker 与应用的集成方式。这两种方法还支持在原生应用中提供丰富的数据体验。

Create Signed Embed Url 端点方法与 Embed SDK 方法的不同之处体现在以下几个方面:

  • 它不需要嵌入密钥。
  • 该过程类似于使用其他 REST API。
  • 端点必须调用服务器端。

嵌入 SDK 方法具有以下特点:

  • 它基于 JavaScript,可定位特定的 DOM 元素。
  • 它会与 Looker 组件互动,以帮助设置界面样式。
  • 它可与辅助实用程序函数集成,并且开发工作可以在客户端完成。

如果您对开发或架构要求有具体疑问,可以与 Looker 的专业服务团队或我们的某个开发合作伙伴联系。

此外,我们的支持团队可以帮助您解决任何高级别问题或意外行为。您可以点击 Contact Us(与我们联系),在 Looker 的帮助中心内提交支持请求。

如需查看其他资源,请参阅已签名嵌入工具和问题排查资源社区帖子。