虽然 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 授权机制的理解。但它为连接任何服务提供了强大的灵活性。
|