Embed SDK 与 Create Signed Embed Url 端点

Looker 出色的让所有用户或客户都能访问数据。正如我们之前所说,Looker 有助于“普及数据”。您可以让用户自行查看报告,而无需让分析师手动创建信息中心;借助 Looker,您的用户甚至可以执行自己的分析。实现此目的的方法之一是使用 Looker 的签名嵌入功能。本页面介绍了两种实现签名嵌入的不同方法:Looker API 和 Looker 的嵌入软件开发套件 (SDK)。

假设您想要将报告集成到公司自己的应用或内部系统中,并且不希望向所有用户提供 Looker 凭据。这可以通过 Looker 的签名嵌入功能来实现。这与对 SSO 工作流(例如 LDAP 或 SAML)的一般引用不同,后者也可以集成到 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 的 Embed 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。Embed SDK 仅适用于浏览器应用,但包含一个辅助实用程序函数,用于生成签名网址。这两种脚本都有 TypeScript 和 Python 两种版本。尽管 Embed SDK 位于 nmpjs 注册表中,但您无需使用 Node.js Web 服务器。

Embed 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 实例中加载信息中心。

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

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

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

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

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

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

Embed SDK 方法具有以下功能:

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

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

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

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