Google Sheets OAuth 錯誤 – 點擊「使用 Google 登入」時出現 Error 400: redirect_uri_mismatch

嗨 n8n 社群 :waving_hand:
我在嘗試使用 OAuth2 連接 Google Sheets 認證時收到錯誤。設定好用戶端 ID 和用戶端密碼後,當我點擊「使用 Google 登入」時,我從 Google 收到以下錯誤:
存取遭到封鎖:此應用程式的請求無效
錯誤 400:redirect_uri_mismatch
環境:
n8n 版本:自行託管(Hostinger VPS)
實例網址:https://n8n.srv1724629.hstgr.cloud
節點:Google Sheets → Create Spreadsheet
認證類型:Google Sheets OAuth2 API
重現步驟:
在 n8n 中開啟 Google Sheets 節點
建立新認證 → Google Sheets OAuth2 API
輸入來自 Google Cloud Console 的用戶端 ID 和用戶端密碼
點擊「使用 Google 登入」
Google 顯示錯誤 400:redirect_uri_mismatch
錯誤訊息:
存取遭到封鎖:此應用程式的請求無效
錯誤 400:redirect_uri_mismatch
您無法登入,因為此應用程式傳送了無效的請求。
在我們新增重定向網址後,錯誤顯示應用程式錯誤

@Rohit_Kulkarni
這顯然表示您提供的重定向 URL 與您在 Google 上設定的不相符。首先我建議您查看此連結,以更好地了解如何設定 Google 憑證:

然後請讓我知道問題是否仍然存在,如果是的話,那就與基礎設施有關。

感謝您的回覆,但錯誤仍然存在,錯誤在我的重定向 URL 在 OAuth 中

請有人回覆

好的,所以現在我想請你檢查你的 WEBHOOK_URL 是否與你的網域完全相符。你可以進行配置,然後重新啟動你的實例,嘗試在 Google Cloud 上建立另一個 URI,並使用全新的用戶端 ID 和密鑰,嘗試在其中建立重新導向。請讓我知道這些步驟的進展。

我不懂你想说什么,你能简化一下吗

@Rohit_Kulkarni

首先,你在截圖中看到的「嘗試的操作失敗」彈出視窗可能只是 Google Cloud 網站的故障。要修復這個問題,請嘗試使用無痕瀏覽器視窗或清除快取。另外,請確保你已完整填寫側邊欄中的「OAuth 同意畫面」部分,因為如果基本應用程式資訊遺漏,Google 將不會讓你儲存設定。

其次,「redirect_uri_mismatch」錯誤發生是因為 Google 和 n8n 對於登入流程所使用的確切網址不一致。你可以把它想像成安全握手;如果 n8n 傳送給 Google 的位址與你在 Google 控制台中儲存的位址有任何細微差異,Google 就會因安全原因而封鎖連接。

要在你的 Hostinger VPS 上解決這個問題,你需要確保 n8n 知道自己的公開位址。做法是設定一個名為 WEBHOOK_URL 的環境變數,將其設為你的完整 HTTPS 位址。沒有這個設定,n8n 可能會向 Google 傳送內部或不正確的位址,這會觸發不匹配錯誤。

最後,一旦伺服器設定更新後,回到你的 n8n 認證畫面,並複製「OAuth 重新導向 URL」,複製時要完全按照其顯示的方式。將該特定連結貼入 Google Cloud 控制台的「授權的重新導向 URI」欄位。另外,請確保你的電子郵件已在 Google 同意畫面中新增為「測試使用者」,這樣你才有權限登入。

@Rohit_Kulkarni

請檢查您是否在擁有編輯者或擁有者權限的專案中編輯 OAuth 用戶端,請嘗試建立新的 OAuth 用戶端而不是編輯目前的用戶端,等待幾分鐘後再試一次(Google Cloud 有時在介面上會出現暫時性故障),使用具有專案管理存取權的其他 Google 帳戶進行測試。在我看來,錯誤發生在保存 OAuth 用戶端的時候。

redirect_uri_mismatch 是 Google 告訴你 n8n 傳送的回呼 URL 與你在 Google Cloud OAuth 用戶端中註冊的不完全相符,上面的回答說得對,這是需要對齊的地方。完全相符的要求比人們預期的要嚴格得多。

具體做法是:在 n8n 中開啟你的 Google Sheets 認證,複製它顯示的 OAuth 重新導向 URL(會是 https://your-domain/rest/oauth2-credential/callback)。將那個確切的字串貼到你的 Google Cloud Console OAuth 用戶端中的「已授權重新導向 URI」,逐個字元相符,https 不是 http、沒有尾部斜線的差異、你的實際網域而不是 IP。在自架式安裝(Hostinger)上,通常的根本原因是 N8N_EDITOR_BASE_URL 沒有設定為你完整的 https 網域,因為 n8n 從它建立那個回呼,所以如果環境變數設定錯誤或缺少,n8n 傳送的 URL 就是錯的,無論你在 Google 中貼什麼都沒用。

所以先檢查 N8N_EDITOR_BASE_URL,然後讓 Google Console 的項目與 n8n 顯示的回呼 URL 完全相符。如果兩者對齐了但仍然失敗,確認你的反向代理是否在傳遞 X-Forwarded-Proto https,這樣 n8n 才不會認為它在 http 上。你的 n8n 認證中的重新導向 URL 實際上顯示什麼,是 http 還是 https?

我也遇到過同樣的問題,請確保你沒有發佈應用程式,並且將你的電子郵件地址加入測試使用者中,這樣應該會有幫助。