跳到主要内容

Google 服务账户

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

前置条件 ​

设置服务账户 ​

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

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

创建 Google Cloud Console 项目 ​

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

  1. 使用 Google 凭据登录 Google Cloud 控制台。

  2. 在顶部导航中打开项目下拉菜单,选择 New project(新建项目),也可以直接进入新建项目页面。

  3. 输入 Project name(项目名称),并选择项目的位置,即 Organization(组织) 和/或 Parent resource(父级资源)。

  4. 选择 Create(创建)。

  5. 检查顶部导航,确保项目下拉菜单已选中你的项目。如果没有,请选择刚创建的项目。

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

启用 API ​

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

  1. 进入 Google Cloud 控制台的 API 库,确保已选择正确的项目。

    检查 Google Cloud 顶部导航中的项目下拉菜单
  2. 进入 APIs & Services > Library(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. 选择 ENABLE(启用)。

设置 Google Cloud 服务账户 ​

  1. 进入 Google Cloud Console - Library(库),确认当前位于正确的项目中。

    检查 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

    如果使用早于 0.156.0 的 n8n 版本,请将 JSON 文件中所有 \n 替换为实际换行。

  4. 可选:选择是否启用 Impersonate a User(模拟用户)。

    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(保存)凭据。

视频 ​

故障排查 ​

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

危险

无法访问“我的云端硬盘”

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

虽然不推荐,但如果需要使用服务账户访问 my drive,可通过启用全域委派实现。更多信息,请参阅这篇社区帖子。

服务账户无法访问未与其关联邮箱共享的 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。获取方式如下:
    • 打开 Google Cloud Console 项目,再打开 Service Accounts(服务账户)页面。
    • 复制 OAuth 2 Client ID(OAuth 2 客户端 ID),将其用作 Domain Wide Delegation(全域委派)的 Client 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(授权)。

可能需要等待 5 分钟至 24 小时,才能模拟 Workspace 中的所有用户。

本文为社区中文翻译。查看对应英文原文