排解已簽署嵌入驗證錯誤

如果您使用已簽署的嵌入功能來嵌入 Looker 內容,可能會很難排解驗證錯誤。您可以嘗試採用幾種不同的方法來診斷問題,並根據重新導向傳送使用者的目的地來選擇方法。除非另有說明,否則本頁提示假設您會使用 Looker 嵌入範例 GitHub 存放區中的指令碼,產生已簽署的嵌入網址。

建議優先採用的一般做法

開始嵌入前,請確認您已在「管理」面板中產生嵌入密鑰,且嵌入內容可以在實際環境模式中運作,而非僅在開發人員模式中運作。

如果您有管理員權限,請以嵌入使用者的身分執行 sudo 命令,確認內容是否正常運作。如果您收到 Oops, we can't find that page 錯誤,則問題很可能是權限或內容存取權的問題,而非驗證問題。如果嵌入使用者未顯示在 Looker 管理面板的「使用者」頁面中,表示系統尚未建立使用者,且嵌入網址失敗。您可以嘗試根據本頁列出的建議和資源排解問題。

如果是自架式執行個體,請確認用戶端伺服器可連上 Looker 伺服器。如果用戶端和伺服器之間的資料是透過公開網際網路傳輸,請確認是否使用 SSL (HTTPS)。

本頁面其餘部分說明您可能遇到的錯誤和其他問題,以及解決這些問題的步驟。

系統將我重新導向至登入頁面或「單一登入失敗」頁面

如果系統將您重新導向至登入頁面,或是顯示錯誤 Single sign on failure. Please contact an adinistrator. 的頁面,通常表示已簽署的嵌入驗證功能無法正常運作。

首先,請產生新的已簽署嵌入網址,然後在 Looker 管理面板的「嵌入」頁面下方的「嵌入 URI 驗證工具」中進行測試。嵌入 URI 驗證工具有時會提供有用的資訊,說明您遇到錯誤的原因。

嵌入 URI 驗證工具是否正常顯示?

如果您在 Looker 管理面板的「嵌入」頁面中,但「嵌入 URI 驗證工具」未顯示在頁面上,表示您尚未啟用已簽署的嵌入功能。您必須啟用已簽署的嵌入功能

我收到 'signature param' failed to authenticate 錯誤

如果您看到這則錯誤訊息,表示指令碼產生的簽章無法正常運作。請參閱以下各節,瞭解可能的解決方案:

嵌入密鑰是否相符?

Looker 執行個體中的嵌入密鑰應與已簽署嵌入網址產生指令碼中的已簽署嵌入密鑰相同。如果不確定是否屬實,請選取「重設密鑰」,產生新的密鑰並新增至指令碼。重設金鑰會導致使用舊版金鑰的所有嵌入項目失效。

請嘗試使用 Create Signed Embed Url 端點建立嵌入網址,並在呼叫內容中指定指令碼中的 secret_id 密鑰。回應會告知您使用的密鑰是否無效。

簽章字串是否排列正確?

簽章字串中的嵌入參數「必須」按照正確順序出現在網址產生指令碼中。已簽署的嵌入說明文件頁面會說明正確的順序。

簽章字串在輸出時,應看起來像是未經編碼的字串:

  company_name.looker.com
  /login/embed/embed%2Fdashboards%2F123
  "ac786cbc06162b1edde3a8b35920a93e"
  15852443573600
  "test_external_user_id"
  ["access_data","see_user_dashboards"]
  ["test_model"]
  []
  "test group space"
  {"test_user_attribute":"yes"}
  {}

使用嵌入密鑰為簽名字串簽署後,請確認最終到達網址中的參數與簽名字串中指定的參數相符。請確認 +/ 等特殊字元已在網址參數中編碼 (例如,如果 + 未正確編碼,可能會被解讀為空格),且已簽署的嵌入網址中沒有任何換行符號,否則可能會在編碼後遺漏。

請將您的指令碼與我們的指令碼範例進行比較,確認您的指令碼是否已完成所有必要步驟,以及簽名是否使用適當的加密方式。

我收到 This request includes invalid params: ["embed_domain"] 錯誤

開始排解這個錯誤之前,請注意,只有在指令碼使用 JavaScript 事件監聽器時,才需要使用 embed_domain 參數,而這通常不是基本已簽署嵌入功能的必要條件。如果應用程式不需要監聽 JavaScript 事件,最簡單的做法就是完全移除 embed_domain 參數。

如果您確實需要在嵌入應用程式中使用 JavaScript 事件,請檢查網址產生指令碼,瞭解 embed_domain 參數新增的位置。這項錯誤通常表示 embed_domain 參數不小心設為已簽署的嵌入參數,而非直接放在 embed_url 中。除非 embed_domain 參數確實是 embed_url 的一部分,否則指令碼不會正確設定格式,且應在嵌入網址後方和任何參數前方加入。

以下是腳本中正確指定 embed_domain 參數的情況:

  embed_url: "/embed/dashboards/3?embed_domain=https://company.com"
如果您使用的是 Create Signed Embed Url 端點,embed_domain 參數應放在 target_url 的結尾。

我收到 'nonce' param already used this hour 錯誤

nonce 參數的值不得在同一小時內重複使用,且長度不得超過 255 個半形字元。因此,如果您測試的是已存取的網址,就會看到這則錯誤訊息。請確認您產生的嵌入網址尚未在瀏覽器中載入,且 Nonce 會變更,不會重複使用。

我被重新導向至 Uh-Oh, Something went wrong 錯誤頁面

如果您看到這個錯誤訊息,請與 Looker 支援團隊聯絡,協助您診斷問題。

系統會將我重新導向至顯示 401 錯誤訊息的頁面 You are not authenticated to view this page.

如果您已嘗試所有適用的疑難排解步驟,但 401 問題仍未解決,表示您的瀏覽器可能封鎖了第三方 Cookie。大多數瀏覽器的限制越來越多,預設的 Cookie 政策會封鎖這類 Cookie。舉例來說,Safari 的「防止跨網站追蹤」設定預設為啟用,Chrome 的「在無痕模式中封鎖第三方 Cookie」設定也是如此。

如果您的應用程式嵌入 Looker 內容,且 Looker 執行個體的網域名稱結尾為 company.looker.com,除非修改瀏覽器的 Cookie 隱私權設定,否則瀏覽器不會對跨網域的嵌入 iframe 進行驗證。

Looker 託管的執行個體

如果 Looker 代管管理員不希望使用者在瀏覽器中手動啟用第三方 Cookie,就必須變更 Looker 代管例項的網域名稱。舉例來說,Looker 代管的執行個體通常採用 https://<hostname>.<subdomain>.<domain>.com 格式。如果 Looker 網域名稱有所變更,Looker 就不會再視為第三方網域。請參閱「如果 Looker 執行個體的網址有所變動,會發生什麼情況?」詳情請參閱「最佳做法」頁面。

如果您想為 Looker 執行個體新增自訂網域,請與 Looker 支援團隊聯絡,以設定必要的 DNS 設定。

自行託管的執行個體

如果您自行代管 Looker 執行個體,請變更 Looker 執行個體的 DNS 項目,確保使用已簽署嵌入功能的應用程式與 Looker 執行個體位於相同的基礎網域。

Chrome 也規定任何含有 samesite=none 標記的工作階段 Cookie 都應指定 secure。如果 Looker 例項未提供 --ssl-provided-externally-by=<s> 啟動旗標,Looker 就不會傳送 secure 信號,因此請務必設定這個啟動旗標。

我仍有問題,現在該怎麼辦?

如果嘗試本頁的建議後仍遇到問題,請與 Looker 聯絡人聯絡,或前往 Looker 支援團隊開立支援單。