Auth0 User Login

工作流概述

这是一个包含16个节点的复杂工作流,主要用于自动化处理各种任务。

工作流源代码

下载
{
  "id": "AS2Rj41p6OyA0xZK",
  "meta": {
    "instanceId": "7858a8e25b8fc4dae485c1ef345e6fe74effb1f5060433ef500b4c186c965c18",
    "templateCredsSetupCompleted": true
  },
  "name": "Auth0 User Login",
  "tags": [],
  "nodes": [
    {
      "id": "25022573-c99e-40d2-88e2-a0e7a9780181",
      "name": "Request Access Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1260,
        320
      ],
      "parameters": {
        "url": "={{ $json.domain }}/oauth/token",
        "method": "POST",
        "options": {},
        "jsonBody": "={
  \"grant_type\": \"authorization_code\",
  \"code\": \"{{ $json.query.code }}\",
  \"client_id\": \"{{ $json.client_id }}\",
  \"client_secret\": \"{{ $json.client_secret }}\",
  \"redirect_uri\": \"{{ $json.my_server }}\",
  \"audience\": \"{{ $json.domain }}/api/v2/\"
}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "233d69ed-d835-4022-815e-e786706ec78a",
      "name": "Get Userinfo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1500,
        320
      ],
      "parameters": {
        "url": "={{ $('Set Application Details1').item.json.domain }}/userinfo",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access_token }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "860e8a20-f6a3-4c8e-be71-361e6f1f8641",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        720,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fa80ac35-7029-4507-b5ea-845bec07b672",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{$json.query.code}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7c4e15c7-2ee0-4c54-8255-e7cc250e718a",
      "name": "No Code Found",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        880,
        540
      ],
      "parameters": {
        "errorMessage": "Couldn't get authorization code!"
      },
      "typeVersion": 1
    },
    {
      "id": "2e0b2ff5-47ce-4199-bdd2-e31a4d32fd15",
      "name": "Open Auth Webpage",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1020,
        40
      ],
      "parameters": {
        "options": {},
        "redirectURL": "={{ $json.domain }}/authorize?response_type=code&scope=openid+email+profile+image+name&client_id={{ $json.client_id }}&redirect_uri={{ $json.my_server }}/webhook/receive-token",
        "respondWith": "redirect"
      },
      "typeVersion": 1.1
    },
    {
      "id": "d790ce47-725a-4a69-b66f-f7e80e2d9e5e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1180,
        80
      ],
      "parameters": {
        "color": 6,
        "width": 238.05017098334866,
        "height": 140.50170983348636,
        "content": "### You can also add   &connection=github to end of authorize URL in order to get user to login via Github, Facebook, etc"
      },
      "typeVersion": 1
    },
    {
      "id": "1c5bb01a-0fed-4783-b18d-d8f7e818371c",
      "name": "Set Application Details",
      "type": "n8n-nodes-base.set",
      "position": [
        780,
        40
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "003d523a-5e14-4a5a-aed6-f72c3fce6e6d",
              "name": "domain",
              "type": "string",
              "value": ""
            },
            {
              "id": "7db513f3-55f6-4bab-92b0-e62d0b7f05a1",
              "name": "client_id",
              "type": "string",
              "value": ""
            },
            {
              "id": "52da7d5d-6683-4cf9-a7de-c2ab2ce48f3d",
              "name": "my_server",
              "type": "string",
              "value": ""
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "8ced9fb6-fd49-4d57-8d74-b04e45b6c216",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -456.1003419666973
      ],
      "parameters": {
        "color": 5,
        "width": 623.7263504769883,
        "height": 397.87914003146636,
        "content": "## 1. First, go to https://auth0.com and create a Single Page Application. From Dashboard/Applications, click on your new app settings. The first step is to add the following to allowed callback URLs:
http://localhost:5678, http://localhost:5678/webhook/receive-token 

### (If you do not run n8n locally, replace localhost with your server where you run n8n. You must also replace it in **Set Application Details** 'my_server' field)

## From the same settings page,  retrieve the Domain, Client_ID, and Client_Secret of your application."
      },
      "typeVersion": 1
    },
    {
      "id": "94155312-1230-4c13-9104-5e26a6f68e91",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        -40
      ],
      "parameters": {
        "color": 6,
        "width": 437.4336297478876,
        "height": 107.35461655041311,
        "content": "### This step will return the authentication page to the user and let him login using gmail or by creating a new account."
      },
      "typeVersion": 1
    },
    {
      "id": "9a7bcabf-1cc0-43e5-8f52-cc3f2781150f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -40
      ],
      "parameters": {
        "width": 1296.8510714753793,
        "height": 256.53228919365705,
        "content": "## Step 1: Authentication
"
      },
      "typeVersion": 1
    },
    {
      "id": "7e7560d6-4c26-4e80-ad62-07a674e928f9",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        260
      ],
      "parameters": {
        "width": 1302.371850917427,
        "height": 444.78164181462137,
        "content": "## Step 2: Get Access Token
"
      },
      "typeVersion": 1
    },
    {
      "id": "97c8bc77-bc7d-4be2-9858-668c5e325f49",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        560.9464093496792
      ],
      "parameters": {
        "color": 6,
        "width": 327.74230574931124,
        "height": 144.40136786678917,
        "content": "### If Step 1 was successful, Auth0 will automatically call Step 2 in its callback with a code. This code is used to generate an access token which can verify the user is legitimate and email verified."
      },
      "typeVersion": 1
    },
    {
      "id": "fe103ba1-8143-482c-846f-0f381ca2661a",
      "name": "Set Application Details1",
      "type": "n8n-nodes-base.set",
      "position": [
        1000,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "003d523a-5e14-4a5a-aed6-f72c3fce6e6d",
              "name": "domain",
              "type": "string",
              "value": ""
            },
            {
              "id": "7db513f3-55f6-4bab-92b0-e62d0b7f05a1",
              "name": "client_id",
              "type": "string",
              "value": ""
            },
            {
              "id": "52da7d5d-6683-4cf9-a7de-c2ab2ce48f3d",
              "name": "my_server",
              "type": "string",
              "value": ""
            },
            {
              "id": "d339dd3d-ed57-4b0f-81c6-a8f5f7c474fb",
              "name": "client_secret",
              "type": "string",
              "value": ""
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "b3bb59b8-16fc-483d-ae8d-ec3e65c3326d",
      "name": "/login",
      "type": "n8n-nodes-base.webhook",
      "position": [
        540,
        40
      ],
      "webhookId": "046e2370-0ae1-4d64-be9b-cbb0545de323",
      "parameters": {
        "path": "login",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "79825832-6d06-4a48-aa0a-bad3d52ab2c1",
      "name": "/receive-token",
      "type": "n8n-nodes-base.webhook",
      "position": [
        540,
        320
      ],
      "webhookId": "7bd9ea5a-c354-41c0-9d17-4a02ca8e3055",
      "parameters": {
        "path": "receive-token",
        "options": {},
        "responseMode": "lastNode"
      },
      "typeVersion": 2
    },
    {
      "id": "b9406ef0-3567-46da-9989-d7f458ad73fb",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        760,
        -460
      ],
      "parameters": {
        "color": 5,
        "width": 426.62126002791706,
        "height": 393.48225931142105,
        "content": "## 2. Fill in Set Application Details and Set Application Details1

## 3. **Login from https://<n8n server address>/webhook/login!**"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7d2f0dad-3951-49e2-9467-03124dbc52ba",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Set Application Details1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Code Found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/login": {
      "main": [
        [
          {
            "node": "Set Application Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/receive-token": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request Access Token": {
      "main": [
        [
          {
            "node": "Get Userinfo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Application Details": {
      "main": [
        [
          {
            "node": "Open Auth Webpage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Application Details1": {
      "main": [
        [
          {
            "node": "Request Access Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

功能特点

  • 自动检测新邮件
  • AI智能内容分析
  • 自定义分类规则
  • 批量处理能力
  • 详细的处理日志

技术分析

节点类型及作用

  • Httprequest
  • If
  • Stopanderror
  • Respondtowebhook
  • Stickynote

复杂度评估

配置难度:
★★★★☆
维护难度:
★★☆☆☆
扩展性:
★★★★☆

实施指南

前置条件

  • 有效的Gmail账户
  • n8n平台访问权限
  • Google API凭证
  • AI分类服务订阅

配置步骤

  1. 在n8n中导入工作流JSON文件
  2. 配置Gmail节点的认证信息
  3. 设置AI分类器的API密钥
  4. 自定义分类规则和标签映射
  5. 测试工作流执行
  6. 配置定时触发器(可选)

关键参数

参数名称 默认值 说明
maxEmails 50 单次处理的最大邮件数量
confidenceThreshold 0.8 分类置信度阈值
autoLabel true 是否自动添加标签

最佳实践

优化建议

  • 定期更新AI分类模型以提高准确性
  • 根据邮件量调整处理批次大小
  • 设置合理的分类置信度阈值
  • 定期清理过期的分类规则

安全注意事项

  • 妥善保管API密钥和认证信息
  • 限制工作流的访问权限
  • 定期审查处理日志
  • 启用双因素认证保护Gmail账户

性能优化

  • 使用增量处理减少重复工作
  • 缓存频繁访问的数据
  • 并行处理多个邮件分类任务
  • 监控系统资源使用情况

故障排除

常见问题

邮件未被正确分类

检查AI分类器的置信度阈值设置,适当降低阈值或更新训练数据。

Gmail认证失败

确认Google API凭证有效且具有正确的权限范围,重新进行OAuth授权。

调试技巧

  • 启用详细日志记录查看每个步骤的执行情况
  • 使用测试邮件验证分类逻辑
  • 检查网络连接和API服务状态
  • 逐步执行工作流定位问题节点

错误处理

工作流包含以下错误处理机制:

  • 网络超时自动重试(最多3次)
  • API错误记录和告警
  • 处理失败邮件的隔离机制
  • 异常情况下的回滚操作