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。Google 将带您到 Credentials 页面。

  3. 选择 + CREATE CREDENTIALS > Service account
  4. Service account name 中输入名称,在 Service account ID 中输入 ID。有关更多信息,请参考创建服务账户
  5. 选择 CREATE AND CONTINUE
  6. 根据您的用例,您可能希望使用相应的部分来 Select a roleGrant 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。不要包括周围的 " 标记。将此作为 Private Key 私钥 输入到您的 n8n 凭据中。

    较旧版本的 n8n

    如果您运行的 n8n 版本早于 0.156.0,请将 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. 保存 您的凭据。

视频#

以下视频演示了上述步骤。

故障排除#

服务账户无法访问 Google 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
  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 并将其用作 Domain Wide DelegationClient ID 客户端 ID
  5. OAuth scopes 字段中,输入逗号分隔的作用域列表以授予您的应用程序访问权限。例如,如果您的应用程序需要对 Google Drive API 和 Google Calendar API 的域范围完全访问权限,请输入:https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
  6. 选择 Authorize

您可能需要 5 分钟到 24 小时才能模拟工作区中的所有用户。