Google:服务账户#
使用服务账户(Service Account)比使用 OAuth2 更复杂。在开始之前,请先:
- 检查你的节点是否兼容服务账户。
- 确认你确实需要使用服务账户。对于大多数使用场景,OAuth2 是更好的选择。
- 阅读 Google 官方文档中关于 创建和管理服务账户 的说明。
前提条件#
- 创建一个 Google Cloud 账户。
设置服务账户#
将你的 n8n 凭据连接到 Google 服务账户共有四个步骤:
- 创建 Google Cloud Console 项目。
- 启用 API。
- 设置 Google Cloud 服务账户。
- 完成你的 n8n 凭据配置。
创建 Google Cloud Console 项目#
首先,创建一个 Google Cloud Console 项目。如果你已有项目,可跳至下一节:
- 使用你的 Google 账号登录 Google Cloud Console。
- 在顶部菜单栏中,点击顶部导航中的项目下拉菜单,选择 新建项目,或直接访问 新建项目页面。
- 输入 项目名称,并为你的项目选择一个 位置(Location)。
- 点击 创建。
- 检查顶部导航栏,确保项目下拉菜单中已选中你刚创建的项目。如果没有,请手动选择你刚刚创建的项目。 Google Cloud 顶部导航中的项目下拉菜单 查看 Google Cloud 顶部导航中的项目下拉菜单
启用 API#
创建项目后,启用你需要访问的 API:
- 访问你的 Google Cloud Console - 库。确保你处于正确的项目中。Google Cloud 顶部导航中的项目下拉菜单 检查 Google Cloud 顶部导航栏中的项目下拉菜单。
- 进入 APIs & Services > Library(API 和服务 > 库)。
- 搜索并选择你要启用的 API。例如,对于 Gmail 节点,请搜索并启用 Gmail API。
- 某些集成可能需要其他 API 或要求你申请访问权限:
- Google Perspective:申请 API 访问权限
- Google Ads:获取 开发者令牌 (Developer Token)
需要启用 Google Drive API 的集成
以下集成除了自身所需的 API 外,还需要启用 Google Drive API:
- Google Docs
- Google Sheets
- Google Slides
Google Vertex AI API
除了 Vertex AI API 外,你还需启用 Cloud Resource Manager API。
- 点击 ENABLE(启用)。
设置 Google Cloud 服务账号#
- 访问你的 Google Cloud Console - API 库。确保你处于正确的项目中。 Google Cloud 顶部导航中的项目下拉菜单 检查 Google Cloud 顶部导航栏中的项目下拉菜单
- 打开左侧导航菜单,进入 APIs & Services > Credentials(API 和服务 > 凭据)。Google 将跳转至你的 凭据(Credentials) 页面。
- 选择 + 创建凭据 > 服务账号(Create credentials > Service account)。
- 在 服务账号名称(Service account name) 中输入名称,并在 服务账号 ID(Service account ID) 中输入一个 ID。更多信息请参考 创建服务账号。
- 选择 创建并继续(Create and continue)。
- 根据你的使用场景,你可以使用相应的部分来 选择角色(Select a role) 并 授予用户对此服务账号的访问权限(Grant users access to this service account)。
- 选择 完成(Done)。
- 在 服务账号(Service Accounts) 区域下,选择你刚刚创建的服务账号。打开 密钥(Keys) 选项卡。
- 选择 添加密钥 > 创建新密钥(Add key > Create new key)。
- 在弹出的对话框中,选择 JSON,然后点击 创建(CREATE)。Google 会将该文件保存到你的计算机上。
完成你的 n8n 凭据#
在 Google 项目和凭据配置完成后,请完成 n8n 凭据的设置:
- 打开下载的 JSON 文件。
- 复制
client_email,并在你的 n8n 凭据中将其填入 Service Account Email(服务账户邮箱)。 - 复制
private_key,不要包含前后的"引号,并将其作为 Private Key(私钥)填入 n8n 凭据中。
旧版本 n8n
如果你使用的是早于 0.156.0 版本的 n8n,请将 JSON 文件中的所有 \n 替换为换行符。
- 可选:选择是否要 模拟用户(Impersonate a User)(启用状态)。
- 若要使用此功能,你必须以 Google Workspace 超级管理员身份为服务账户启用全网域委派(Enable domain-wide delegation)。
- 输入你要模拟的用户的 Email(邮箱地址)。
- 如果你计划在 HTTP Request 节点中使用此凭据,请开启 Set up for use in HTTP Request node(为在 HTTP 请求节点中使用而设置)。
- 启用此设置后,你需要为该节点添加 Scope(s)(作用域)。n8n 已预填充部分作用域。更多信息请参考 Google API 的 OAuth 2.0 作用域。
- 保存你的凭据。
视频#
故障排除#
服务账户无法访问 Google Drive 文件#
无法访问“我的云端硬盘”(my drive)
Google 不再允许在 2025 年 4 月 15 日之后创建的服务账户(Service Account)访问 my drive。目前,服务账户只能访问共享云端硬盘(shared drives)。
尽管不推荐,但如果你仍需要使用服务账户访问 my drive,可以通过启用全网域授权(domain-wide delegation) 实现。你可以在 社区的这篇帖子中了解更多信息。
服务账户无法访问未与其关联的用户邮箱共享的 Google Drive 文件和文件夹。请按以下步骤操作:
- 访问你的 Google Cloud Console,复制你的服务账户邮箱。
- 打开 Google Drive,找到目标文件或文件夹。
- 右键点击该文件或文件夹,选择 分享(Share)。
- 在 添加人员和群组(Add People and groups) 中粘贴你的服务账户邮箱。
- 选择 编辑者(Editor) 以获得读写权限,或选择 查看者(Viewer) 以获得只读权限。
启用全网域委派#
要使用服务账户(service account)模拟用户操作,您必须为该服务账户启用全网域委派(domain-wide delegation)。
不推荐 Google 建议您避免使用全网域委派,因为它允许模拟任意用户(包括超级管理员),可能存在安全风险。
要将全网域权限委派给一个服务账户,您必须是 Google Workspace 网域的超级管理员。然后执行以下步骤:
- 登录您的 Google Workspace 网域的 管理控制台(Admin console),点击菜单按钮(汉堡菜单),然后选择 安全性 > 访问权限和数据控制 > API 控制(Security > Access and data control > API Controls)。
- 在 全网域委派(Domain wide delegation) 面板中,点击 管理全网域委派(Manage Domain Wide Delegation)。
- 点击 添加新项目(Add new)。
- 在 客户端 ID(Client ID) 字段中,输入服务账户的 客户端 ID(Client ID)。获取 Client ID 的方法如下:
- 打开您的 Google Cloud Console 项目,进入 服务账户(Service Accounts) 页面。
- 复制 OAuth 2.0 客户端 ID(OAuth 2 Client ID),并将其用作 全网域委派(Domain Wide Delegation) 中的 客户端 ID(Client ID)。
- 在 OAuth 范围(OAuth scopes) 字段中,输入以逗号分隔的作用域列表,以授予您的应用相应访问权限。例如,如果您的应用需要对 Google Drive API 和 Google Calendar API 拥有全网域完全访问权限,请输入:
https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar。 - 点击 授权(Authorize)。
完成上述操作后,可能需要 5 分钟到 24 小时 才能成功模拟 Workspace 中的所有用户。
聊天查看文档 此页面 !Thumbs up有帮助 !Thumbs down无帮助 感谢您的反馈! 提交 上一页 Google OAuth2 通用配置 下一页 Google Gemini(PaLM) 凭据 由 Material for MkDocs Insiders 提供支持