Skip to content

Google: 服务账户#

使用服务账户比 OAuth2 更复杂。开始之前:

  • 检查您的节点是否与服务账户兼容
  • 确保您需要使用服务账户。对于大多数用例,OAuth2 是更好的选择。
  • 阅读 Google 关于创建和管理服务账户的文档。

前置条件#

设置服务账户#

将您的 n8n 凭据连接到 Google 服务账户需要四个步骤:

  1. 创建 Google Cloud Console 项目
  2. 启用 API
  3. 设置 Google Cloud 服务账户
  4. 完成您的 n8n 凭据

创建 Google Cloud Console 项目#

首先,创建一个 Google Cloud Console 项目。如果您已经有项目,请跳转到下一节:

  1. 使用您的 Google 凭据登录到您的 Google Cloud 控制台
  2. 在顶部菜单中,选择顶部导航中的项目下拉菜单并选择新建项目,或直接转到新建项目页面。
  3. 输入项目名称并为您的项目选择位置
  4. 选择创建
  5. 检查顶部导航并确保项目下拉菜单已选择您的项目。如果没有,请选择您刚创建的项目。

    Google Cloud 顶部导航中的项目下拉菜单
    检查 Google Cloud 顶部导航中的项目下拉菜单

启用 API#

创建项目后,启用您需要访问的 API:

  1. 访问您的 Google Cloud 控制台 - 库。确保您在正确的项目中。
    Google Cloud 顶部导航中的项目下拉菜单
    检查 Google Cloud 顶部导航中的项目下拉菜单
  2. 转到 API 和服务 > 库
  3. 搜索并选择您要启用的 API。例如,对于 Gmail 节点,搜索并启用 Gmail API。
  4. 某些集成需要其他 API 或需要您请求访问权限:

    需要 Google Drive API

    以下集成除了需要自己的 API 外,还需要 Google Drive API:

    • Google Docs
    • Google Sheets
    • Google Slides

    Google Vertex AI API

    除了 Vertex AI API,您还需要启用 Cloud Resource Manager API

  5. 选择启用

设置 Google Cloud 服务账户#

  1. 访问您的 Google Cloud Console - Library。确保您在正确的项目中。

    The project dropdown in the Google Cloud top navigation
    检查 Google Cloud 顶部导航中的项目下拉菜单

  2. 打开左侧导航菜单并转到 APIs & Services > Credentials API 和服务 > 凭据。Google 将带您到您的 Credentials 凭据 页面。

  3. 选择 + Create credentials > Service account + 创建凭据 > 服务账户
  4. Service account name 服务账户名称 中输入名称,在 Service account ID 服务账户 ID 中输入 ID。有关更多信息,请参阅创建服务账户
  5. 选择 Create and continue 创建并继续
  6. 根据您的用例,您可能想要使用相应部分 Select a role 选择角色Grant users access to this service account 授予用户访问此服务账户的权限
  7. 选择 Done 完成
  8. Service Accounts 服务账户 部分下选择您新创建的服务账户。打开 Keys 密钥 选项卡。
  9. 选择 Add key > Create new key 添加密钥 > 创建新密钥
  10. 在出现的模态框中,选择 JSON,然后选择 CREATE 创建。Google 将文件保存到您的计算机。

完成您的 n8n 凭据#

在 Google 项目和凭据完全配置后,完成您的 n8n 凭据:

  1. 打开下载的 JSON 文件。
  2. 复制 client_email 并在您的 n8n 凭据中作为 Service Account Email 服务账户电子邮件 输入。
  3. 复制 private_key。不要包含周围的 " 标记。在您的 n8n 凭据中作为 Private Key 私钥 输入。

    较旧版本的 n8n

    如果您运行的 n8n 版本早于 0.156.0,请将 JSON 文件中所有的 \n 实例替换为新行。

  4. 可选:选择是否要模拟用户(已开启)。

    1. 要使用此选项,您必须作为 Google Workspace 超级管理员为服务账户启用域范围委派
    2. 输入您要模拟的用户的Email 电子邮件
  5. 如果您计划将此凭据与 HTTP Request 节点一起使用,请开启 Set up for use in HTTP Request node 设置为在 HTTP Request 节点中使用
    1. 开启此设置后,您需要为节点添加Scope(s) 作用域。n8n 预填充了一些作用域。有关更多信息,请参考 Google API 的 OAuth 2.0 作用域
  6. Save 保存您的凭据。

Video#

故障排除#

服务账户无法访问 Google Drive 文件#

无法访问我的云端硬盘

Google 不再允许 2025 年 4 月 15 日之后创建的服务账户访问 我的云端硬盘。服务账户现在只能访问共享云端硬盘。

虽然不推荐,但如果您需要使用服务账户访问 我的云端硬盘,您可以通过启用域范围委派来实现。您可以在社区中的这篇帖子中了解更多信息。

服务账户无法访问未与其关联用户邮箱共享的 Google Drive 文件和文件夹。

  1. 访问您的 Google Cloud Console 并复制您的服务账户邮箱。
  2. 访问您的 Google Drive 并转到指定的文件或文件夹。
  3. 右键点击文件或文件夹并选择 Share 共享
  4. 将您的服务账户邮箱粘贴到 Add People and groups 添加人员和群组 中。
  5. 选择 Editor 编辑者 以获取读写访问权限,或选择 Viewer 查看者 以获取只读访问权限。

启用域范围委派#

要使用服务账户模拟用户,您必须为服务账户启用域范围委派。

不推荐

Google 建议您避免使用域范围委派,因为它允许模拟任何用户(包括超级管理员),可能构成安全风险。

要向服务账户委派域范围权限,您必须是 Google Workspace 域的超级管理员。然后:

  1. 从您的 Google Workspace 域的管理控制台,选择汉堡菜单,然后选择 Security > Access and data control > API Controls 安全 > 访问和数据控制 > API 控制
  2. Domain wide delegation 域范围委派 窗格中,选择 Manage Domain Wide Delegation 管理域范围委派
  3. 选择 Add new 添加新项
  4. Client ID 客户端 ID 字段中,输入服务账户的 Client ID 客户端 ID。要获取客户端 ID:
    • 打开您的 Google Cloud Console 项目,然后打开服务账户页面。
    • 复制 OAuth 2 Client ID 并将其用作域范围委派Client ID 客户端 ID
  5. OAuth scopes OAuth 作用域 字段中,输入以逗号分隔的作用域列表以授予您的应用程序访问权限。例如,如果您的应用程序需要对 Google Drive API 和 Google Calendar API 的域范围完全访问权限,请输入:https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
  6. 选择 Authorize 授权

在您可以模拟 Workspace 中的所有用户之前,可能需要 5 分钟到 24 小时的时间。