使用簽署的嵌入內容時,排解驗證錯誤可能很困難。您可以採取幾種不同的方法來診斷問題,並根據重新導向將使用者帶往何處選擇方法。除非另有說明,否則本頁的提示會假設您使用類似於 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 個字元。因此,如果您測試的網址已遭存取,就會看到這項錯誤。請確認您產生的是尚未載入瀏覽器的新嵌入網址,且隨機碼會變更,不會重複使用。
我遭到重新導向至 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 支援開立支援單。