【解決教學】n8n 無法串接 Google Cloud,OAuth Redirect URL 沒有網域的處理方法

在使用 n8n 串接 Google Sheets、Google Drive 等服務時,若遇到 OAuth 無法認證,出現類似以下的 Redirect URL:

http://:5678/rest/oauth2-credential/callback

代表你的 n8n 還沒有設定「對外可用的網域」,導致 Google Cloud 無法認證這個 callback URL。本篇教學將一步步帶你解決這個問題,順利串接 Google OAuth。


🔍 問題描述:OAuth Redirect URL 缺少網域

當你在 n8n 中建立 Google API 憑證時,OAuth redirect URL 顯示為:

http://:5678/rest/oauth2-credential/callback

這種格式是錯誤的,會導致在設定Google Cloud設定時,無法順利新增「已授權的重新導向 URI」,因為:

  • 沒有網域名稱
  • Google Cloud 不接受 localhosthttp://:5678 這類本地位址
  • 導致無法完成 OAuth 授權流程

✅ 解決方法:設定 Zeabur 上的 n8n 公開網域與環境變數

步驟 1:確認你有對外公開網域

如果你是用 Zeabur 部署 n8n,請確認你的服務已設定公開網址(例如):

https://你的網域名稱.zeabur.app

你可以在 Zeabur 專案中的 網路 分頁中找到這個設定。


步驟 2:新增或修改以下環境變數

請在 Zeabur 中進入你的 n8n 服務 → 「環境變數」頁面,設定以下 key-value:

KeyValue
WEBHOOK_URLhttps://dado3c.zeabur.app
N8N_HOSTdado3c.zeabur.app
N8N_PORT5678
N8N_PROTOCOLhttps

步驟 3:重新部署 / 重啟 n8n

設定完畢後,請點選 Zeabur 的「重新部署」按鈕,等待服務重啟。


步驟 4:檢查 OAuth Redirect URL 是否正常

重新開啟 Google Sheets / Drive 憑證設定畫面,應該會看到如下正確格式的網址:

https://你的網域名稱.app/rest/oauth2-credential/callback

請將此網址複製,貼到 Google Cloud Console → OAuth 用戶端設定 → 「授權的重新導向 URI」中,並儲存。


🧪 成功驗證:串接 Google Sheets

設定完成後,回到 n8n 點擊「Connect」,會跳出 Google 帳號登入畫面,授權完成即表示連接成功!

🧪 補充說明這4個環境變數的用途與差異

🔑 WEBHOOK_URL

  • 用途:指定 n8n 對外通知用的「完整網址(含協定)」
  • 影響範圍
    • OAuth 認證時自動產生的 Redirect URL
    • Webhook 節點發出的網址
  • 正確格式:必須是完整、可公開訪問的網址(含 https://
  • 你設定的值https://你的網域名稱.app → 表示 OAuth 認證與 webhook 將使用此公開網域作為 base URL。

🌍 N8N_HOST

  • 用途:指定 n8n 服務在容器內部綁定的網域或 IP(對外訪問時也會參考)
  • 影響範圍
    • 內部連接用、Webhook 記錄連結、OAuth 判斷是否為同一來源
  • 你設定的值你的網域名稱.app → 告訴系統「這個服務的網域名稱是這個」,以便產出正確的連結與認證 URL。

🔌 N8N_PORT

  • 用途:指定 n8n 對外提供服務的 port(預設是 5678
  • 影響範圍
    • 組合在完整 URL 裡使用(例如:https://你的網域名稱.com:5678
  • 你設定的值: yaml複製編輯5678 → 這是 Zeabur 預設的 n8n 埠號,不需修改除非你有自訂需求。

🔒 N8N_PROTOCOL

  • 用途:指定連線協議是 http 還是 https
  • 影響範圍
    • 影響 webhook URL 與 OAuth Redirect URL 是否為 HTTPS 安全連線
  • 你設定的值: nginx複製編輯https → 這是正確做法,因為 Google Cloud OAuth 僅接受 HTTPS 的 callback URI。

✅ 總結(組合成 URL)

以上變數會一起組合成:

${N8N_PROTOCOL}://${N8N_HOST}:${N8N_PORT}

https://你的網域名稱.app:5678

並進一步組成:

https://dado3c.zeabur.app:5678/rest/oauth2-credential/callback

這就是 Google Cloud 要認可的「完整 OAuth Redirect URI」。


🎯 常見 Q&A

Q1:我不是用 Zeabur,怎麼辦?

你一樣可以手動設定 WEBHOOK_URLN8N_HOST,但必須確保你的 n8n 有對外公開的網域,且支援 HTTPS。

Q2:為什麼一定要 HTTPS?

因為 Google OAuth 安全政策不允許 http://localhost 或非安全連線做為 callback URL,必須為 https:// 開頭的公開網址。

Q3:我已經設定環境變數,為什麼 Redirect URL 還是沒有變?

請確認是否有做以下兩件事:

  1. 點選 Zeabur 的重新部署(或手動重啟服務)才能讓環境變數生效
  2. ✅ 確認填寫的值沒有多空格或拼錯,特別是 https 是否打成 http

Q4:OAuth 成功後,Google Sheets 節點還是抓不到資料怎麼辦?

這可能是因為:

  • Google Sheets API 沒有開啟
  • 權限範圍(Scope)不足,請確保你有勾選 Google Sheets APIGoogle Drive API
  • 並確認該 Google 帳號對應的試算表有「編輯權限」

可到 [Google Cloud Console → API 與服務 → 已啟用的 API] 確認是否已啟用。

Q5:OAuth 登入時顯示「應用程式未驗證」是什麼意思?

這是因為你用的是「測試中的 OAuth 憑證」。解決方法:

  • 點選「進階」→「前往(你的專案 ID)」
  • 若是正式用戶要大量使用,可在 Google Cloud Console 提交驗證申請
  • 開發測試階段可以忽略這個警告,不影響功能使用

📌 結語

這次問題的核心在於「n8n 未設定公開網域,導致 OAuth 無法綁定」。只要你正確設定 WEBHOOK_URL 等環境變數,並使用 Zeabur 提供的免費網域,就可以輕鬆串接 Google 服務,無需自己架設 HTTPS 憑證!

博文
博文

DADO3C 創辦人

文章: 14

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *