找回密码
 创建社区账号
搜索
热搜: MCP 知识库 案例
查看: 64|回复: 0

第二部分:核心概念与功能 → 凭证 → 创建自定义凭证

[复制链接]

74

主题

0

回帖

40万

积分

超级版主

积分
400222
发表于 2025-5-13 20:56:22 | 显示全部楼层 |阅读模式
虽然 n8n 提供了许多内置的凭证类型,但在某些情况下,您可能需要连接到 n8n 尚未提供特定凭证类型的服务,或者您需要实现更复杂的自定义授权流程。这时,您可以创建自定义凭证类型。
创建自定义凭证的步骤:
创建自定义凭证通常涉及到编写 JavaScript 或 TypeScript 代码,并遵循 n8n 的凭证开发规范。
  • 创建凭证定义文件: 您需要在 n8n 的自定义凭证目录下创建一个新的文件(通常以 .credentials.ts 或 .credentials.js 结尾)。您需要在 n8n 的配置文件中指定自定义凭证的目录。
  • 定义凭证描述对象: 在您的凭证定义文件中,您需要导出一个 JavaScript 对象,该对象描述了您的自定义凭证类型。这个对象通常包含以下属性:
    • type: 必须设置为一个唯一的字符串,用于标识您的自定义凭证类型。
    • displayName: 在 n8n UI 中显示的凭证类型的名称。
    • inputs: 一个数组,定义了用户在创建此凭证时需要填写的字段。每个字段对象可以包含 name(字段的内部名称)、type(例如 string, password, options)、displayName(在 UI 中显示的标签)、description、required 等属性。
    • authenticate: 一个异步函数,用于处理凭证的实际身份验证逻辑。这个函数接收用户在 inputs 中填写的值,并返回一个包含身份验证信息(例如 headers, query parameters, body)的对象,这些信息将被添加到后续的 API 请求中。
  • 实现 authenticate 函数: 这是自定义凭证的核心部分。您需要编写代码来使用用户提供的输入值与目标服务进行身份验证,并生成后续请求所需的授权信息。这可能涉及到:
    • 构建特定的 HTTP 头(例如 Authorization: Bearer <token>)。
    • 构建查询参数。
    • 构建请求体。
    • 处理 OAuth 2.0 的授权码或令牌交换流程(如果需要,您可能需要使用像 axios 这样的 HTTP 客户端库)。
    • 从安全存储(例如 n8n 的凭证存储)检索敏感信息。
  • 链接或放置自定义凭证文件: 将您的自定义凭证文件放置在您在 n8n 配置文件中指定的自定义凭证目录下。
  • 在 n8n UI 中使用: 一旦 n8n 加载了您的自定义凭证类型,您就可以在凭证管理页面中看到它并创建新的凭证。在配置需要连接到您的目标服务的节点时,您将能够选择您的自定义凭证类型并填写所需的字段。

示例 (简化的 API 密钥凭证):
JavaScript (英语)

// my-custom-api.credentials.jsmodule.exports = {  type: 'myCustomApi',  displayName: 'My Custom API Key',  inputs: [    {      name: 'apiKey',      type: 'string',      displayName: 'API Key',      description: 'Your API key for My Custom API',      required: true,    },  ],  async authenticate({ apiKey }) {    return {      headers: {        'X-API-Key': apiKey,      },    };  },};


在这个例子中,我们定义了一个名为 "My Custom API Key" 的凭证类型,它需要用户输入一个名为 "apiKey" 的字符串。authenticate 函数接收这个 apiKey,并返回一个包含 X-API-Key HTTP 头的对象,后续的请求将使用这个头进行身份验证。
创建自定义凭证需要一定的编程知识和对目标服务 API 授权机制的理解。但它为连接任何服务提供了强大的灵活性。

您需要登录后才可以回帖 登录 | 创建社区账号

本版积分规则

QQ|手机版|小黑屋|n8n 中文社区

GMT+8, 2025-5-23 06:28 , Processed in 0.058962 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表