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

使用API token授权Zendesk时GuzzleHttp请求报401未授权错误

Zendesk集成GuzzleHttp请求返回401 Unauthorized排查方案

Postman请求正常说明API token、账号权限、接口地址均有效,问题完全出在Guzzle构造请求的配置环节,90%以上的同类问题都是授权头构造错误导致,按以下顺序排查即可:

核心常见错误原因

  • 授权字段格式不符合Zendesk要求:Zendesk API Token模式的Basic Auth认证,要求用户名格式必须为注册邮箱/token,密码为生成的API Token,多数人写代码时会漏掉邮箱后的/token后缀,或者把邮箱、Token的拼接顺序搞反,手动做base64编码时也容易混入多余空格、换行符,导致最终的Authorization头值和Postman自动生成的有效值不一致。
  • Guzzle配置冲突:同时手动传Authorization头、又配置了Guzzle自带的auth参数时,会出现配置覆盖,实际发出的请求头和预期不符;部分场景下手动指定了错误的Content-Type,也会触发Zendesk侧的授权校验拦截。
  • 编码问题:如果邮箱或Token包含特殊字符,手动拼接字符串做base64编码时没有做正确处理,会导致认证信息失真。

可直接复用的正确写法

不要手动拼接Authorization头,优先用Guzzle原生的auth配置项,组件会自动处理编码、格式问题,避免手写出错:

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://你的Zendesk实例域名.zendesk.com/api/v2/',
    'headers' => [
        'Accept' => 'application/json',
        'Content-Type' => 'application/json'
    ]
]);

// 发起请求
$response = $client->request('GET', 'tickets.json', [
    // 注意用户名必须拼接/token后缀
    'auth' => ['你的Zendesk登录邮箱/token', '你生成的API Token']
]);

快速定位步骤

  • 打开Postman的代码生成功能,选择PHP -> Guzzle,导出可直接运行的基准代码,在本地运行确认可以正常返回,排除环境网络问题。
  • 对比自己写的业务代码和基准代码的配置差异,重点检查auth参数、headers项的不同。
  • 在Guzzle请求配置中加入'debug' => true,运行脚本打印实际发出的原始请求头,把Authorization字段的base64值解码后,和Postman生成的认证字符串做逐字对比,找到差异点即可定位问题。
  • 如果之前手动写了Authorization头配置,先全部删掉,改用原生auth参数传认证信息,绝大多数场景下可以直接解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:31:10