Google OAuth 驗證搭配 Gmail node:當 GmailOAuth2Api 強制要求 6 個作用域時,如何通過驗證?

嗨各位,

我正在用 n8n 為小企業建構自託管的 AI 電郵助手,目前正在準備 Google OAuth 驗證。

工作流程:

  • 讀取未讀的 Gmail 郵件
  • 篩選自動化電郵
  • 將內容發送到 Claude
  • 建立 Gmail 草稿
  • 只在處理成功後才將郵件標記為已讀
  • 發送執行摘要

應用程式不會永久刪除電郵。

我發現的問題

經過調查後,我發現原生的 Gmail OAuth2 API 憑證的作用域是硬編碼的。

它總是會請求:

  • gmail.labels
  • gmail.addons.current.action.compose
  • gmail.addons.current.message.action
  • mail.google.com
  • gmail.modify
  • gmail.compose

Scope 屬性是隱藏的,所以無法從使用者介面進行自訂。

我也發現社群討論顯示,只要在 Google Cloud 中限制作用域,OAuth 授權就會因為 Gmail 憑證仍然請求完整的硬編碼作用域清單而失敗,並傳回 HTTP 403 錯誤。

還有一個開放的功能請求,要求 Gmail 節點支援通用的 Google OAuth 憑證而非固定的 Gmail 憑證。

我的問題

有人在這裡實際上 完成了 Google 的 OAuth 驗證 同時保留了原生 Gmail 節點嗎?

如果有:

  • Google 接受了預設的硬編碼作用域嗎?
  • 你必須為 mail.google.com 辯護嗎?
  • Google 要求進行任何變更嗎?

或者你最終用 HTTP Request 節點搭配通用的 Google OAuth2 憑證和 Gmail REST API 來取代了 Gmail 節點?

我不是在尋求理論上的建議——我真的想要聽到已經成功完成 Google 驗證流程的生產環境 n8n 應用程式使用者的回饋。

感謝!

分享你的工作流程

(在畫布上選擇節點,並使用鍵盤快速鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 來複製和貼上工作流程。)

分享最後一個節點傳回的輸出

關於你的 n8n 設定的資訊

  • n8n 版本:「localhost」
  • 資料庫(預設值:SQLite):
  • n8n EXECUTIONS_PROCESS 設定(預設值:own, main):
  • 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用程式):DOCKER
  • 作業系統:

@Jidenkaes
阻礙並不是這六個作用域作為一個整體,而是原生 Gmail 節點會硬編碼 https://mail.google.com/,這是一個受限作用域(完全存取,包括永久刪除)。正是這個單一作用域把你推到 Google 的受限作用域軌道上:每年的第三方安全評估,加上審核員拒絕只讀取、草稿和標記已讀的應用程式的完全存取請求。

你的整個工作流程(讀取未讀、建立草稿、移除 UNREAD 標籤)都符合一個作用域 gmail.modify 的範圍。Google 將其分類為敏感級而非受限級,特別是因為它無法永久刪除郵件,而你的應用程式本來就從未這樣做。這讓你使用較輕鬆的敏感作用域驗證而非受限級驗證,並為你提供了一個乾淨的最小權限正當理由。

Gmail 節點不會讓你修剪其作用域,所以用 HTTP Request 節點取代這些節點,直接呼叫 Gmail REST API,使用通用 Google OAuth2 API 憑證進行驗證,你可以自己輸入作用域:

https://www.googleapis.com/auth/gmail.modify

謝謝,這非常有幫助。只是澄清一下:你個人是否使用 HTTP Request + 通用 Google OAuth2 方法完成過 Google 的 OAuth 驗證,還是這是你會推薦的架構?我想確定是否有人已經用這個設置通過 Google 的審核。