我正在嘗試使用內建的 OAuth 2.0 將 n8n 連接到 Zoho 的 API
經過試錯後,我收到回報說 n8n 沒有使用正確的授權類型來重新整理 token
「我們已與後端團隊檢查了回報的問題,我們的開發人員已確認問題是因為 grant_type 參數未設定為 refresh_token。」
參考此規格:OAuth 2.0 Refresh Token Grant Type
這是設定問題還是 bug?或者 n8n 不支援 refresh token 授權類型?
我正在嘗試使用內建的 OAuth 2.0 將 n8n 連接到 Zoho 的 API
經過試錯後,我收到回報說 n8n 沒有使用正確的授權類型來重新整理 token
「我們已與後端團隊檢查了回報的問題,我們的開發人員已確認問題是因為 grant_type 參數未設定為 refresh_token。」
參考此規格:OAuth 2.0 Refresh Token Grant Type
這是設定問題還是 bug?或者 n8n 不支援 refresh token 授權類型?
嘿 @taamtera,在等待回覆的時候,這些資源可能對你有幫助:
自動符合您的問題。
文件:
論壇:
@selbrae、@Gallo_AIA——你們之前協助解決過類似的問題,可以看一下嗎?
由 n8n 社群機器人自動建議。這是試點計畫——請在此分享回饋。
Hi @taamtera
這是 n8n 處理 OAuth2 的已知行為,但通常是 設定/配置問題 而非漏洞。n8n 確實 支援 refresh_token 授權類型,但 Zoho 的 API 對於刷新請求的格式要求特別嚴格(特別是要求 grant_type 在請求本體中而非查詢字串中,並需要特定的用戶端認證)。
根據您使用的認證區塊,以下是解決方案。請查看哪一個適用:
1)如果您使用內建的 Zoho 節點,請確保已選擇正確的 Zoho API(例如 Zoho CRM、Zoho Books),因為它們具有不同的範圍。
2)如果您使用 HTTP Request 節點搭配通用 OAuth2,請按照以下方式配置認證:
Authorization Codehttps://accounts.zoho.com/oauth/v2/authhttps://accounts.zoho.com/oauth/v2/token[Your Zoho Client ID][Your Zoho Client Secret]ZohoCRM.modules.ALL)access_type=offline 和 prompt=consent。
access_type=offline,Zoho 將 不會 發出刷新令牌,n8n 將無法刷新工作階段,導致您收到的錯誤。這有幫助嗎?
Hi @taamtera
n8n 確實支援 refresh_token 授權,所以這不是缺失的功能。Zoho 的 token 端點是異常情況:其文件將 grant_type、client_id、client_secret 和 refresh_token 列為 /oauth/v2/token 的查詢字串參數,並說明該端點不接受作為請求體物件發送的參數,這就是為什麼 Zoho 的後端團隊在重新整理呼叫中看不到 grant_type。
可靠的做法是停止依賴憑證的自動重新整理,自己執行。取得一次重新整理令牌、儲存它,然後使用 HTTP Request 節點向你的資料中心帳戶 URL 發送 POST 請求進行重新整理,參數放在查詢字串中:
https://accounts.zoho.com/oauth/v2/token?grant_type=refresh_token&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&refresh_token=YOUR_REFRESH_TOKEN
使用簽發令牌的資料中心的帳戶網域(.eu、.in、.com.au、.ca),來自一個資料中心的令牌不會針對另一個資料中心進行重新整理。
請參閱以下內容:
n8n 支援 refresh-token 授權流程。目前的 OAuth 用戶端使用 refresh_token 和 grant_type: refresh_token 建立令牌請求主體。內建的 Zoho 憑證使用授權碼流程、請求 access_type=offline、在主體中傳送用戶端驗證,並公開區域特定的 Zoho 令牌 URL。
請勿嘗試選擇 refresh_token 作為憑證的初始授權類型。它是授權碼憑證內的重新整理步驟,而不是獨立的設定選項。
缺少的細節是你的 n8n 版本和確切的憑證類型。如果這是內建的 Zoho 憑證,請確認其存取令牌 URL 與你的 Zoho 資料中心相符。重新連線憑證,讓 n8n 儲存新的離線重新整理令牌,然後重試。
如果在目前的 n8n 版本上 Zoho 仍記錄沒有 grant_type 的令牌請求,那就是一個可重現的錯誤。在報告中附上版本、憑證類型、令牌端點主機,以及已編輯的 Zoho 請求日誌。請勿包含令牌或用戶端密鑰。
n8n 重新整理請求來源:n8n/packages/@n8n/client-oauth2/src/client-oauth2-token.ts at master · n8n-io/n8n · GitHub
n8n Zoho 憑證來源:n8n/packages/nodes-base/credentials/ZohoOAuth2Api.credentials.ts at master · n8n-io/n8n · GitHub