嵌入 SDK 与“Create Signed Embed Url”(创建已签名的嵌入网址)端点

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

假设您想将查询结果集成到公司的自有应用或内部系统中,但不想为所有用户提供 Looker 凭据。您可以使用 Looker 的签名嵌入功能来实现此目的。这与对 LDAP 或 SAML 等 SSO 工作流的一般引用不同,后者也可以集成到 Looker 实例中。

已签名已签名嵌入表示,在创建嵌入网址并从浏览器发送请求后,用户的 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

我们通常建议客户使用嵌入 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 速率限制。一般来说,与嵌入式 Secret 相比,API 凭据更容易轮换。多个 API 3 凭据可以同时处于有效状态,但一个实例一次只能使用一个嵌入密钥。这样,您就可以更轻松地替换凭据,而不会中断服务。与签名嵌入网址脚本示例代码库中的示例脚本相比,Create Signed Embed Url 端点还会创建更短、更简洁的网址。

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

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

嵌入 SDK

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

嵌入 SDK 的一个独特功能是,它还允许您利用 Looker 组件,这是一组可重用的代码块,旨在帮助实现 Looker 的设计系统。

Embed SDK 的另一个好处是,它提供了许多预建函数,可减少开发团队的许多工作。一个主要示例是取消点击。Embed SDK 使用 MessageChannel API 而不是 postMessage。这意味着,在同一网页上运行的两个脚本可以使用 postMessage API 相互通信。这样,其他函数就可以与 iframe 通信,或者让其他函数与 iframe 通信

Embed SDK 的工作流程示例如下:

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

那么,哪种方法最好呢?

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

维恩图,突出显示了“创建已签名的嵌入网址”方法与嵌入 SDK 方法之间的异同。

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

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

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

Embed SDK 方法具有以下功能:

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

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

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

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