Google: 服务账户#
使用服务账户比 OAuth2 更复杂。开始之前:
前置条件#
- 创建一个 Google Cloud 账户。
设置服务账户#
将您的 n8n 凭据连接到 Google 服务账户需要四个步骤:
创建 Google Cloud Console 项目#
首先,创建一个 Google Cloud Console 项目。如果您已经有项目,请跳转到下一节:
- 使用您的 Google 凭据登录到您的 Google Cloud 控制台。
- 在顶部菜单中,选择顶部导航中的项目下拉菜单并选择新建项目,或直接转到新建项目页面。
- 输入项目名称并为您的项目选择位置。
- 选择创建。
-
检查顶部导航并确保项目下拉菜单已选择您的项目。如果没有,请选择您刚创建的项目。
检查 Google Cloud 顶部导航中的项目下拉菜单
启用 API#
创建项目后,启用您需要访问的 API:
- 访问您的 Google Cloud 控制台 - 库。确保您在正确的项目中。
检查 Google Cloud 顶部导航中的项目下拉菜单 - 转到 API 和服务 > 库。
- 搜索并选择您要启用的 API。例如,对于 Gmail 节点,搜索并启用 Gmail API。
-
某些集成需要其他 API 或需要您请求访问权限:
- Google Perspective:请求 API 访问权限。
- Google Ads:获取开发者令牌。
需要 Google Drive API
以下集成除了需要自己的 API 外,还需要 Google Drive API:
- Google Docs
- Google Sheets
- Google Slides
Google Vertex AI API
除了 Vertex AI API,您还需要启用 Cloud Resource Manager API。
-
选择启用。
设置 Google Cloud 服务账户#
-
访问您的 Google Cloud Console - Library。确保您在正确的项目中。
检查 Google Cloud 顶部导航中的项目下拉菜单 -
打开左侧导航菜单并转到 APIs & Services > Credentials API 和服务 > 凭据。Google 将带您到您的 Credentials 凭据 页面。
- 选择 + Create credentials > Service account + 创建凭据 > 服务账户。
- 在 Service account name 服务账户名称 中输入名称,在 Service account ID 服务账户 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
。不要包含周围的"
标记。在您的 n8n 凭据中作为 Private Key 私钥 输入。较旧版本的 n8n
如果您运行的 n8n 版本早于 0.156.0,请将 JSON 文件中所有的
\n
实例替换为新行。 -
可选:选择是否要模拟用户(已开启)。
- 要使用此选项,您必须作为 Google Workspace 超级管理员为服务账户启用域范围委派。
- 输入您要模拟的用户的Email 电子邮件。
- 如果您计划将此凭据与 HTTP Request 节点一起使用,请开启 Set up for use in HTTP Request node 设置为在 HTTP Request 节点中使用。
- 开启此设置后,您需要为节点添加Scope(s) 作用域。n8n 预填充了一些作用域。有关更多信息,请参考 Google API 的 OAuth 2.0 作用域。
- Save 保存您的凭据。
Video#
故障排除#
服务账户无法访问 Google Drive 文件#
无法访问我的云端硬盘
Google 不再允许 2025 年 4 月 15 日之后创建的服务账户访问 我的云端硬盘
。服务账户现在只能访问共享云端硬盘。
虽然不推荐,但如果您需要使用服务账户访问 我的云端硬盘
,您可以通过启用域范围委派来实现。您可以在社区中的这篇帖子中了解更多信息。
服务账户无法访问未与其关联用户邮箱共享的 Google Drive 文件和文件夹。
- 访问您的 Google Cloud Console 并复制您的服务账户邮箱。
- 访问您的 Google Drive 并转到指定的文件或文件夹。
- 右键点击文件或文件夹并选择 Share 共享。
- 将您的服务账户邮箱粘贴到 Add People and groups 添加人员和群组 中。
- 选择 Editor 编辑者 以获取读写访问权限,或选择 Viewer 查看者 以获取只读访问权限。
启用域范围委派#
要使用服务账户模拟用户,您必须为服务账户启用域范围委派。
不推荐
Google 建议您避免使用域范围委派,因为它允许模拟任何用户(包括超级管理员),可能构成安全风险。
要向服务账户委派域范围权限,您必须是 Google Workspace 域的超级管理员。然后:
- 从您的 Google Workspace 域的管理控制台,选择汉堡菜单,然后选择 Security > Access and data control > API Controls 安全 > 访问和数据控制 > API 控制。
- 在 Domain wide delegation 域范围委派 窗格中,选择 Manage Domain Wide Delegation 管理域范围委派。
- 选择 Add new 添加新项。
- 在 Client ID 客户端 ID 字段中,输入服务账户的 Client ID 客户端 ID。要获取客户端 ID:
- 打开您的 Google Cloud Console 项目,然后打开服务账户页面。
- 复制 OAuth 2 Client ID 并将其用作域范围委派的 Client ID 客户端 ID。
- 在 OAuth scopes OAuth 作用域 字段中,输入以逗号分隔的作用域列表以授予您的应用程序访问权限。例如,如果您的应用程序需要对 Google Drive API 和 Google Calendar API 的域范围完全访问权限,请输入:
https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
。 - 选择 Authorize 授权。
在您可以模拟 Workspace 中的所有用户之前,可能需要 5 分钟到 24 小时的时间。