How to Run Python Scripts in LibreOffice Calc Macros
Learn when to use Python macros directly in Calc and how to call Python functions from LibreOffice Basic with practical UNO and ScriptForge examples.
ONLYOFFICE 的「Token 無效」訊息通常表示整合雙方驗證的 JSON Web Token (JWT) 不一致。在 Nextcloud 環境中,關鍵在於存在多個令牌路徑:發送到瀏覽器的編輯器配置、發送到 ONLYOFFICE Docs 的傳入請求以及發送到 Nextcloud 的傳出請求(例如回調)。任何一條路徑上的故障都可能在用戶端表現相似。
在您開始更改設定之前,請注意一個重要細節:自 ONLYOFFICE Docs 7.2 版本起,JWT 已預設為啟用,並且文件伺服器可以自動產生金鑰。因此,先前教程中「停用 JWT」的建議並不適用於現代安裝。 ONLYOFFICE 目前的指導原則是配置您自己的金鑰,並在連接器中使用相同的金鑰。請參閱ONLYOFFICE 的 JWT 配置指南。
| 症狀 | 最可能區域 | 第一行動 |
|---|---|---|
| 開啟文件時立即出現錯誤。 | 密鑰、瀏覽器令牌或標頭不匹配 | 比較 Nextcloudjwt_secret和jwt_header目前文件伺服器的設定。 |
| 容器重啟前運作正常,重啟後失敗。 | 自動重新產生或變更 Docker 金鑰 | 檢查正在運行的容器環境,並使用固定值重新建立它JWT_SECRET。 |
| Direct Document Server 健康檢查正常,但 Nextcloud 報告令牌無效。 | 連接器配置或代理/標頭路徑 | 運行連接器的occ onlyoffice:documentserver --check測試並比較標頭。 |
| 只有回調或儲存操作失敗。 | 出站令牌驗證、回呼路徑或儲存端標頭處理 | 檢查文件伺服器日誌,並驗證回呼請求是否已到達 Nextcloud,且包含預期的 JWT 標頭。 |
| 錯誤會在到期邊界附近間歇性地出現。 | 時鐘偏差或令牌生命週期 | 在變更 JWT 容差之前,請先驗證兩台主機上的時間同步狀況。 |
JWT 驗證依賴一個共享金鑰。 ONLYOFFICE Docs 使用此金鑰對令牌進行簽名,接收方則使用相同的金鑰驗證簽名。即使只有一個字元的差異、末尾的空格、過時的環境變量,或是重新產生的 Docker 金鑰,都足以導致看似有效的令牌驗證失敗。
Nextcloud 上的連接器支援此jwt_secret設定。官方連接器還提供了一個occ配置介面,因此您可以檢查 Nextcloud 實際使用的值,而無需依賴您認為有效的設定檔。連接器的目前設定記錄在ONLYOFFICE Nextcloud 連接器的官方 README 檔案中。
sudo -u www-data php occ config:app:get onlyoffice jwt_secret
sudo -u www-data php occ config:app:get onlyoffice jwt_header
請勿將金鑰貼到支援工單、螢幕截圖、與他人分享的 shell 歷史記錄或公開問題報告中。請在本地進行比較。
對於 ONLYOFFICE Docs 的原生 Linux 安裝,支援的設定檔為:
/etc/onlyoffice/documentserver/local.json
ONLYOFFICE 會分別記錄瀏覽器、收件匣和寄件匣的令牌設定。用於驗證的金鑰值必須與您的連接器配置一致。請勿編輯default.json;ONLYOFFICE 明確警告,重新啟動或升級後預設值可能會被覆蓋。此方法適用local.json於軟體包安裝。
local.json請使用 Docker 環境變量,而不是在容器內手動編輯。 ONLYOFFICE 指出,Docker 可以在啟動期間重新產生 JWT 配置;其官方映像支援 `<JWT_NAME>`、 ` <JWT_NAME>` JWT_ENABLED、 `<JWT_NAME> ` 和`<JWT_NAME> `。目前的 Docker 映像檔將 `<JWT_NAME>` 列為預設 JWT 標頭。請參閱官方 Docker DocumentServer 倉庫。JWT_SECRETJWT_HEADERJWT_IN_BODYAuthorization
environment:
- JWT_ENABLED=true
- JWT_SECRET=replace-with-a-long-random-secret
- JWT_HEADER=Authorization
更改 Docker 環境變數後,需要重新建立容器,以便執行中的服務能夠接收到這些變更。僅僅編輯 Compose 檔案而不重新建立容器,並不會更改容器現有的環境變數。
人們常常誤以為郵件頭名稱只是裝飾性的,其實不然。 ONLYOFFICE Docs 的收件匣和寄件匣令牌郵件頭是可設定的,Nextcloud 連接器也有對應的jwt_header設定。它們必須描述相同的請求路徑。
目前 ONLYOFFICE API 文件將 ` Authorization<documentserver_default_name>` 列為傳入 JWT 請求的預設文件伺服器,而 Nextcloud 官方整合文件也同樣將其列為Authorization連接器的預設設定。較舊的範例和現有安裝可能使用 `<documentserver_default_name>`AuthorizationJWT或其他明確配置的值。因此,安全的規則並非“始終使用某個特定字串”,而是確保兩端的活動配置保持一致。
請求格式也很重要。 ONLYOFFICE 的 API 文件顯示,請求頭令牌使用 Bearer 方案發送。有關底層協定的詳細信息,請參閱ONLYOFFICE 請求頭令牌文件。
如果您特意使用了自訂標頭,請在兩個產品中配置相同的值。如果您沒有理由進行自訂,則使用目前的預設值Authorization可以減少操作步驟。
如果 Nextcloud 和 ONLYOFFICE 的設定相符但錯誤仍然存在,請檢查它們之間的路徑。反向代理、驗證閘道、WAF 或入口控制器都可能影響授權標頭。這取決於您的技術棧,因此在沒有證據的情況下不要斷定是代理的問題。
使用以下實際測試步驟:
Authorization,請確認它是轉送而不是替換或刪除標頭。不要為了消除錯誤而禁用 JWT。這樣做會移除驗證機制,而不是修復問題。此外,不要為了解決 JWT 問題而停用 TLS 驗證:憑證驗證和 JWT 簽章驗證是獨立的控制機制。如果遇到憑證問題,請單獨修復憑證鍊或信任配置。
官方 ONLYOFFICE 連接器包含一個專用的診斷命令:
sudo -u www-data php occ onlyoffice:documentserver --check
連接器文件指出,此檢查會報告連線是否成功或錯誤原因。它比僅測試文件伺服器登入頁面更有用,因為它從 Nextcloud 的角度測試了整合。
如果檢查結果顯示文件伺服器可存取但令牌驗證失敗,則傳回使用金鑰和標頭。如果完全無法存取伺服器,請先解決 DNS、路由、防火牆、TLS 或內部 URL 問題,然後再繼續處理 JWT。
JWT 可能包含與時間相關的聲明,而 Nextcloud 連接器會公開這些聲明jwt_leeway和jwt_expiration設定。但這並不意味著您應該先增加容差。如果時脈出現重大誤差,即使令牌本身是正確的,也可能導致其失效;增加容差可能會掩蓋基礎架構問題。
比較 Nextcloud 和 ONLYOFFICE 主機或容器上的 UTC 時間:
date -u
timedatectl status
請確保兩個系統時間同步可靠。只有在確認時鐘差異很小且合理後,才應考慮允許一定的誤差範圍。連接器支援的 JWT 設定列於官方連接器配置參考文件中。
ONLYOFFICE Docs 使用 JWT 來保護編輯器初始化和伺服器間請求。其 API 將瀏覽器令牌與傳入和傳出的 HTTP 請求令牌分開。對於傳入請求,令牌可以包含在請求頭中,或者對於支援的 POST 請求,令牌可以包含在請求體中。對於 GET 請求,ONLYOFFICE 文件中提供了基於請求頭的令牌處理方法。請參閱官方請求簽名文件。
這就解釋了為什麼一個操作可以成功而另一個操作會失敗。例如,如果只有一個方向的令牌設定正確,那麼開啟編輯器可能會成功,但後續的回呼或下載請求卻會失敗。
不。健康端點僅證明服務正在回應;它並不能證明 Nextcloud 連接器和文件伺服器共用相同的 JWT 金鑰和標頭。操作:運轉occ onlyoffice:documentserver --check並檢查有效的連接器設定。
對於 Docker 部署來說,這種方法很脆弱。 ONLYOFFICE 建議透過 Docker 環境變數設定 JWT,因為啟動時可能會重新產生配置。操作方法:在容器配置中定義`<JWT_NAME>` JWT_ENABLED、JWT_SECRET`<JWT_NAME>` 和 `<JWT_NAME>`(如果需要),JWT_HEADER然後重新建立容器。
否。目前官方文件伺服器設定中列出的Authorization是預設標頭,但現有部署和較早的範例可能使用其他明確配置的標頭。操作:讀取所有活動配置並使其保持一致。
它或許能消除眼前的驗證錯誤,但同時也移除了一項安全控制措施,並可能掩蓋根本原因導致的不匹配。操作:除非您有明確且有據可查的理由在不使用 JWT 的情況下運行,否則請修復共用金鑰/標頭。
occ onlyoffice:documentserver --check成功了。
如果金鑰和標頭匹配、時脈同步且連接器檢查成功,但特定操作仍會報告無效令牌,請在變更更多設定之前擷取失敗請求的確切方向和相應的日誌。 ONLYOFFICE 會區分瀏覽器、收件匣和寄件匣的驗證,因此下一個問題是故障發生在編輯器初始化期間、傳送到文件伺服器的命令期間,還是發生在發送回 Nextcloud 的回呼/下載期間。
請將文件伺服器日誌、Nextcloud 日誌和代理程式日誌結合使用,確保時間戳記一致。避免公開完整的 JWT 或密鑰。如果需要比較令牌結構,請對簽名和敏感聲明進行編輯。簽名和驗證的參考行為請參閱ONLYOFFICE 的簽名文件。
Learn when to use Python macros directly in Calc and how to call Python functions from LibreOffice Basic with practical UNO and ScriptForge examples.
透過符合 WOPI 主機名稱、配置 Docker 主機群組、檢查 Nextcloud 的單獨 IP 允許清單以及驗證連接性來修復 Collabora Online CODE 的「未授權 WOPI 主機」錯誤。
透過檢查 JWT 金鑰、授權標頭、Docker 設定、代理行為和連接器運作狀況,修復 Nextcloud 中 ONLYOFFICE 「令牌無效」錯誤。
透過檢查回呼、內部 URL、JWT、TLS、代理路由、日誌和存儲,修復 Nextcloud 中 ONLYOFFICE 的「文件無法儲存」錯誤。
透過檢查 26.04 WebSocket 變更、代理程式路由、升級標頭、逾時、TLS 和日誌來修復 Collabora Online 套接字連線錯誤。
在 Collabora Online 中啟用多語言拼字檢查,方法是新增伺服器字典、允許語言程式碼、為文字指派語言以及測試混合語言文件。
使用 Calc 資料、命名影像佔位符和基本宏,建立可靠的 LibreOffice Writer 郵件合併,支援每筆記錄新增影像,並提供故障排除和驗證步驟。
透過檢查 WOPI、反向代理、TLS、DNS、WebSocket 和伺服器到伺服器的可及性,診斷並修復 Collabora Online 文件連線故障。
在 ONLYOFFICE Desktop Editors 中離線將 PDF 檔案轉換為可編輯的 DOCX 檔案。依照「另存為」步驟操作,檢查 PDF 檔案是否為掃描件,並檢查格式。
使用 Docker 或獨立主機將 Seafile 連接到 Collabora Online。比較部署方案的優缺點,配置 HTTPS 和 WOPI 設置,並驗證編輯功能。