You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script触发Zendesk Webhook时认证失败求助

问题分析与修复方案

你的代码核心错误是HTTP请求头的Basic Auth格式完全不符合标准,Zendesk无法识别你自定义的嵌套authentication结构。以下是具体问题和修复步骤:

1. 错误的认证头格式

你在headers里定义的嵌套authentication对象不是HTTP协议要求的Basic Auth格式。标准Basic Auth的正确实现逻辑是:

  • 将用户名:密码拼接成单个字符串
  • 用Base64编码该字符串
  • 在请求头中添加Authorization字段,值为Basic 编码后的字符串

2. 额外注意事项

  • 若使用Zendesk API Token而非账户密码,用户名需写成你的邮箱地址/token,密码填写API Token
  • 不要手动指定工单id字段,创建工单时Zendesk会自动生成ID,手动指定可能导致冲突
  • 建议开启muteHttpExceptions: true,方便查看完整错误响应信息

修复后的代码

var ENDPOINT_URL = "https://myDevelopmentDomain.zendesk.com/api/v2/tickets.json";
function testhook() {
  // 构造标准Basic Auth认证字符串
  var username = "zendeskWebhookUsername"; // 用API Token的话改为"你的邮箱/token"
  var password = "zendeskWebhookPassword"; // 用API Token的话填写你的Token
  var authHeader = "Basic " + Utilities.base64Encode(username + ":" + password);

  var options = {
    'method': "post",
    'contentType': "application/json",
    'headers': {
      "Authorization": authHeader // 正确的认证头格式
    },
    'payload': JSON.stringify({
      "ticket": {
        // 移除手动指定的id,由Zendesk自动分配
        "priority": "high",
        "status": "open",
        "subject": "Help, my printer is on fire!",
        "description": "The fire is very colorful.",
        "tags": [
          "enterprise",
          "other_tag"
        ]
      }
    }),
    'muteHttpExceptions': true, // 开启后可捕获完整错误响应
  };
  
  var response = UrlFetchApp.fetch(ENDPOINT_URL, options);
  Logger.log(response.getContentText()); // 打印响应内容,方便排查问题
}

验证步骤

  1. 确认Zendesk账户的用户名/密码(或API Token)拥有创建工单的权限
  2. 执行修复后的代码,查看日志输出的响应内容
  3. 若仍报错,检查Zendesk域名是否正确,以及账户是否启用了API访问权限

内容的提问来源于stack exchange,提问作者Ian Hyzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:20:34