跳到主要内容

Google OAuth2(单一服务)

本文说明如何为单一服务创建 Google 凭据,也提供了视频说明。

前置条件 ​

托管 OAuth2 ​

n8n Cloud 用户可为以下节点使用托管 OAuth2:

要使用托管 OAuth2,请在凭据界面点击 Sign in with Google(使用 Google 登录)。无需在 Google Cloud Console 或其他地方进行额外设置。

n8n 凭据界面,包含“使用 Google 登录”按钮和切换到自定义 OAuth2 的下拉菜单

如果希望使用自定义 OAuth2,请通过下拉菜单更改身份验证类型。

自定义 OAuth2 ​

自托管 n8n 用户,以及上方未列出的 Google 节点,均无法使用托管 OAuth2。必须创建自定义的单一服务 OAuth2 凭据,即在 Google Cloud Console 中创建应用,并通过 Client ID 和 Client Secret 连接到 n8n。

本文余下部分介绍完整流程。

设置自定义 OAuth2 ​

按照五个步骤,将 n8n 凭据连接到 Google 服务:

  1. 创建 Google Cloud Console 项目。
  2. 启用 API。
  3. 配置 OAuth 授权同意页面。
  4. 创建 Google OAuth 客户端凭据。
  5. 完成 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(启用)。

配置 OAuth 授权同意页面 ​

如果之前未在 Google Cloud 项目中使用 OAuth,需要配置 OAuth 授权同意页面:

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

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

  2. 打开左侧导航菜单,进入 APIs & Services > OAuth consent screen(API 和服务 > OAuth 授权同意页面)。Google 会将你重定向到 Google Auth Platform 概览页面。

  3. 在 Overview(概览)选项卡中选择 Get started(开始使用),开始配置 OAuth 授权同意。

  4. 输入授权页面中显示的 App name(应用名称)和 User support email(用户支持邮箱)。选择 Next(下一步)继续。

  5. 对于 Audience(受众),如果只允许组织内 Google Workspace 用户访问,请选择 Internal(内部);如果允许任何具有 Google 账户的用户访问,请选择 External(外部)。用户类型的更多信息,请参阅 Google 的用户类型文档。选择 Next(下一步)继续。

    测试模式和测试用户

    如果选择 External(外部),应用默认处于 Testing(测试)模式。在此模式下,只有手动添加为测试用户的 Google 账户才能完成 OAuth 流程,其他人会看到“access denied”(访问被拒绝)页面。添加方法请参阅 Google 尚未验证此应用。

  6. 选择 Google 用于联系你、通知项目变更的 Email addresses(电子邮件地址)。选择 Next(下一步)继续。

  7. 阅读并接受 Google 用户数据政策。选择 Continue(继续),再选择 Create(创建)。

  8. 在左侧菜单中选择 Branding(品牌信息)。

  9. 在 Authorized domains(已获授权的网域)部分选择 Add domain(添加网域):

    • 如果使用 n8n Cloud 服务,请添加 n8n.cloud
    • 如果自托管,请添加 n8n 实例的域名。
  10. 在页面底部选择 Save(保存)。

创建 Google OAuth 客户端凭据 ​

接下来,在 Google 中创建 OAuth 客户端凭据:

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

  2. 在 APIs & Services(API 和服务)部分选择 Credentials(凭据)。

  3. 选择 + Create credentials(+ 创建凭据)> OAuth client ID(OAuth 客户端 ID)。

  4. 在 Application type(应用类型)下拉菜单中选择 Web application(Web 应用)。

  5. Google 会自动生成 Name(名称)。请将其改为能在控制台中辨认的名称。

  6. 从 n8n 凭据中复制 OAuth Redirect URL(OAuth 重定向 URL),粘贴到 Google Console 的 Authorized redirect URIs(已获授权的重定向 URI)中。

    自托管时的 OAuth 重定向 URL

    如果在本地计算机上运行 n8n,使用 Google OAuth 无需公共域名、SSL 证书或端口转发。Google 允许在开发时将 localhost 用作有效重定向 URI。n8n 的 OAuth 重定向 URL 类似于 http://localhost:5678/rest/oauth2-credential/callback。可接受的重定向 URI 的更多详情,请参阅 Google 重定向 URI 文档。

  7. 选择 Create(创建)。

完成 n8n 凭据设置 ​

Google 项目和凭据配置完成后,完成 n8n 凭据设置:

  1. 在 Google 的 OAuth client created(已创建 OAuth 客户端)弹窗中复制 Client ID(客户端 ID),填入 n8n 凭据。
  2. 在同一个 Google 弹窗中复制 Client Secret(客户端密钥),填入 n8n 凭据。
  3. 在 n8n 中选择 Sign in with Google(使用 Google 登录),完成 Google 身份验证。
  4. Save(保存)新凭据。

视频 ​

故障排查 ​

Google 尚未验证此应用 ​

使用 OAuth 身份验证方式时,可能会看到 Google hasn't verified this app(Google 尚未验证此应用) 警告。避免此警告的方法如下:

  • 如果应用的 User Type(用户类型) 为 Internal(内部),请使用要进行身份验证的同一个账号创建 OAuth 凭据。\
  • 如果应用的 User Type(用户类型) 为 External(外部),可以将邮箱地址添加到应用的测试人员列表中:进入 Audience(受众) 页面,将用于登录的邮箱添加至 Test users(测试用户) 列表。

如果需要使用其他账号(开发者或其他第三方)生成的凭据,请按照 Google Cloud 文档中的授权错误:Google 尚未验证此应用说明操作。

Google Cloud 应用授权失效 ​

对于 Publishing status(发布状态) 为 Testing(测试),且 User type(用户类型) 为 External(外部) 的 Google Cloud 应用,授权和令牌会在七天后过期。更多信息请参阅 Google Cloud Platform 控制台帮助:设置 OAuth 同意屏幕。要解决此问题,请在 n8n 凭据弹窗中重新连接应用。

redirect_uri_mismatch ​

此错误表示 n8n 发送的重定向 URI 与 Google Cloud Console OAuth 客户端中登记的所有 URI 均不匹配。

**解决方法:**从 n8n 凭据面板复制 OAuth Redirect URL(OAuth 重定向 URL),将其完整粘贴到 Google OAuth 客户端的 Authorized redirect URIs(已获授权的重定向 URI)字段,包括协议(http 或 https)和端口号。

访问被拒绝 / “应用未验证” ​

这通常是因为应用仍处于 Testing(测试)模式,而用于身份验证的 Google 账户尚未添加为测试用户。

**解决方法:**进入 APIs & Services(API 和服务)> OAuth consent screen(OAuth 授权同意页面)> Test users(测试用户),添加要使用的账户。

invalid_client ​

此错误通常表示 n8n 凭据中的 Client ID 或 Client Secret 与 Google Cloud Console 中的值不匹配。

**解决方法:**返回 Google Cloud Console 中的 OAuth 客户端,重新复制这两个值并填入 n8n。复制时注意避免意外带入空格。

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